같은 interface(규격) 상속받은 클래스들의 부품연결(DI) 호환 > C#/.Net/Blazor/IIS

본문 바로가기
사이트 내 전체검색

C#/.Net/Blazor/IIS

같은 interface(규격) 상속받은 클래스들의 부품연결(DI) 호환

페이지 정보

작성자 sbLAB 댓글 0건 조회 3,380회 작성일 21-03-20 21:50

본문

using System;
 
namespace ConsoleApp1
{
 
    //모니터 제조스펙 인터페이스
    public interface IMonitorMaker
    {
        public MonitorModel MakeProduct(); 
    }
 
 
    //모니터 제조스펙 데이타모델
    public class MonitorModel
    {
        public string Name { get; set; }
        public int Size { get; set; }
    }
 
  
    //삼성모니터 주문스펙
    public class SamsungMonitor : IMonitorMaker
    {
        public MonitorModel MakeProduct()
        {
            return new MonitorModel() { Name = "Samtron", Size = 24 };
        }
    }
 
 
    //LG모니터 주문스펙
    public class LgMonitor : IMonitorMaker
    {
        public MonitorModel MakeProduct()
        {
            return new MonitorModel() { Name = "UltraLG", Size = 32 };
        }
    }
 
    //DELL 모니터 주문스펙
    public class DellMonitor : IMonitorMaker
    {
        public MonitorModel MakeProduct()
        {
            return new MonitorModel() { Name = "DellSync", Size = 27 };
        }
    }
 
 
    //쇼핑몰주문사이트
    public class ShoppingSite
    {
        public MonitorModel OrderMonitor(IMonitorMaker monitorMaker)
        {
            return monitorMaker.MakeProduct();
        }
    }
 
    class Program
    {
        static void Main(string[] args)
        {
            ShoppingSite shoppingSite = new ShoppingSite();
            MonitorModel myMonitorModel;
 
 
            // LgMonitor(), SamsungMonitor(), DellMonitor() 모두
            // 같은 애비 interface 를 따르는 식솔이므로 서로다른 각 제조사별 주문스펙 인스턴스를 투입(부품연결) 가능.
            myMonitorModel = shoppingSite.OrderMonitor(new LgMonitor());
            Console.WriteLine(myMonitorModel.Name + " ------- " + myMonitorModel.Size);
 
            myMonitorModel = shoppingSite.OrderMonitor(new SamsungMonitor());
            Console.WriteLine(myMonitorModel.Name + " ------- " + myMonitorModel.Size);
 
            myMonitorModel = shoppingSite.OrderMonitor(new DellMonitor());
            Console.WriteLine(myMonitorModel.Name + " ------- " + myMonitorModel.Size);
 
        }
    }
 
 
}

 

988e472cd6a387be069319ba90fd836d_1616245496_4457.jpg
 

[이 게시물은 sbLAB님에 의해 2022-12-22 09:42:42 Web/PHP/API에서 이동 됨]

댓글목록

등록된 댓글이 없습니다.

회원로그인

접속자집계

오늘
152
어제
407
최대
1,279
전체
211,922

그누보드5
Copyright © sebom.com All rights reserved.