[DI] Dart Interface 구현 > Flutter/Dart/Node

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

Flutter/Dart/Node

[DI] Dart Interface 구현

페이지 정보

작성자 sbLAB 댓글 0건 조회 1,654회 작성일 22-12-22 09:39

본문

[c# Interface 구조 이해]

1) http://sebom.com/gb/bbs/board.php?bo_table=gallery&wr_id=68 

2) http://sebom.com/gb/bbs/board.php?bo_table=gallery&wr_id=67



1)번 C# Interface 구현/DI 예제를 Dart 로 표현하면..


   
    //모니터 제조스펙 인터페이스
    abstract class IMonitorMaker //Dart 3.0 ==> abstract interface class IMonitorMaker
    {        
      makeProduct();
    }


    //모니터 제조스펙 데이타모델
    class MonitorModel
    {
      String name;
      int size;
       
       MonitorModel(this.name,this.size);
       //MonitorModel({required this.name,required this.size});
           
    }

    //삼성모니터 주문제품스펙
    class SamsungMonitor implements IMonitorMaker
    {
      @override
      MonitorModel makeProduct()
        {
             return MonitorModel("SAMSUMG-Samtron", 24);
            //return MonitorModel(name:"SAMSUMG-Samtron", size:24);
        }
    }

    //LG모니터 주문제품스펙
    class LgMonitor implements IMonitorMaker
    {
      @override  
      MonitorModel makeProduct()
        {
             return MonitorModel("LG-Ultra", 32);
             //return MonitorModel(name:"LG-Ultra", size:32);
        }
    }


   //쇼핑몰주문사이트
    class ShoppingSite
    {
//IMonitorMaker monitorMaker 받을 준비
        MonitorModel orderMonitor(IMonitorMaker monitorMaker)
        {
            return monitorMaker.makeProduct();
        }
    }
 
 
   void main(){
      ShoppingSite shoppingSite = ShoppingSite();
      MonitorModel myMonitorModel;
     
      myMonitorModel = shoppingSite.orderMonitor(SamsungMonitor());
      print(myMonitorModel.name + " " + myMonitorModel.size.toString());
     
      myMonitorModel = shoppingSite.orderMonitor(LgMonitor());
      print(myMonitorModel.name + " " + myMonitorModel.size.toString());  
   }


===================
SAMSUMG-Samtron 24
LG-Ultra 32
===================
  

댓글목록

등록된 댓글이 없습니다.

회원로그인

접속자집계

오늘
298
어제
286
최대
1,279
전체
204,243

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