C \ # 공장 모델 이 무엇 인지 약술

디자인 학습 모드 - 공장 모드
프롤로그
정의
설명 소개
코드 예시
장단 점 및 응용 장면
끝 말
머리말
디자인 모델 - 공장 모델 을 배우 고 간단 한 공장 모델 의 단점 을 해결 했다.
정의.
창설 대상 의 인 터 페 이 스 를 정의 하여 하위 클래스 가 어떤 공장 클래스 를 실례 화하 고 공장 모드 는 창설 과정 을 하위 클래스 로 지연 시 킵 니 다.
설명
우 리 는 그 완 다 백화점 을 예 로 들 었 다. 간단 한 공장 모델 에서 우 리 는 가게 가 우리 의 선택 중 하나 라 고 생각 하고 우 리 는 다른 측면 에서 생각 하고 있다.완 다 백화점 에서 처음에 가게 가 입 점 하지 않 았 을 때 시공 간 이 었 지만 많은 가게 의 위 치 를 남 겨 두 었 기 때문에 다른 사람 이 입 점 작업 을 해 야 했다.이 상태 에서 우 리 는 공장 모델 의 일종 의 실현 으로 이해 할 수 있다.여기 완 다 가 제공 하 는 가게 의 외관 은 우리 프로그램의 인터페이스 정보 에 해당 하 는데 이런 인 터 페 이 스 는 실현 되 지 않 았 을 뿐이다.구체 적 으로 그것 을 실현 하려 면 우 리 는 그 가게 들 이 입 점 하 는 것 을 보아 야 한다.
코드 예제 /// /// /// public abstract class WanDa { // public abstract void Buy(); } /// /// /// public class BuyFood : WanDa { public override void Buy() { Console.WriteLine(" "); } } /// /// /// public class BuyClothes: WanDa { public override void Buy() { Console.WriteLine(" "); } } /// /// - /// public abstract class Creator { // public abstract WanDa BuySomeThing(); } /// /// - /// public class BuyFoodFactory:Creator { /// /// / /// /// public override Food BuySomeThing() { return new BuyFood(); } } /// /// - /// public class BuyClothesFactory:Creator { /// /// /// /// public override Food BuySomeThing() { return new BuyClothes(); } } /// /// /// static void Main(string[] args) { // , () Creator buyFood = new BuyClothesFactory(); Creator buyClothes = new BuyClothesFactory(); // WanDa food = buyFood.BuySomeThing(); food.Buy(); // WanDa clothes= buyClothes.BuySomeThing(); clothes.Buy(); Console.Read(); }

, , , 。
: ,
( case )。 :

	///   
    ///     
    /// 
    public class BuyFurniture : WanDa
    {
        ///   
        ///          
        /// 
        public override void Buy()
        {
            Console.WriteLine("      ");
        }
    }
 	///   
    ///        ,           
    /// 
    public class BuyFurnitureFactory : Creator
    {
        ///   
        ///       
        /// 
        /// 
        public override Food BuySomeThing()
        {
            return new BuyFurniture ();
        }
    }


    ///   
    ///          
    /// 
    static void Main(string[] args)
    {
          //        ,       ()
          Creator buyFood = new BuyClothesFactory();
          Creator buyClothes = new BuyClothesFactory();
          Creator buyFurniture= new BuyFurnitureFactory();

          //       
          WanDa food = buyFood.BuySomeThing();
          food.Buy();

          //      
          WanDa clothes= buyClothes.BuySomeThing();
          clothes.Buy();
          
          //      
          WanDa furniture= buyFurniture.BuySomeThing();
          furniture.Buy();
 
          Console.Read();
      }

  
장단 점 및 응용 장면
장점: 공장 방법 모델 은 간단 한 공장 모델 의 단점 을 극복 하기 위해 설계 되 었 다.간단 한 공장 모델 의 공장 류 는 제품 류 의 증가 에 따라 많은 방법 (또는 코드) 을 증가 해 야 하 는데 공장 방법 모델 은 구체 적 인 공장 류 마다 단일 임무 만 완성 하고 코드 가 간결 하 다.공장 방법 모델 은 OCP 를 완전히 만족 시 킵 니 다. 즉, 아주 좋 은 확장 성 을 가지 고 있 습 니 다. 1. 호출 자 는 대상 을 만 들 고 싶 습 니 다. 그 이름 만 알 면 됩 니 다.2. 확장 성 이 높 습 니 다. 제품 하 나 를 추가 하려 면 공장 류 만 확장 하면 됩 니 다.3. 제품 의 구체 적 인 실현 을 차단 하고 호출 자 는 제품 의 인터페이스 에 만 관심 을 가진다.
단점: 한 제품 을 추가 할 때마다 구체 적 인 유형 과 대상 을 추가 하여 공장 을 실현 하여 시스템 중의 개 수 를 배로 증가 시 키 고 어느 정도 에 시스템 의 복잡 도 를 증가 하 는 동시에 시스템 의 구체 적 인 의존 도 를 증가 시 켰 다.
응용 장면: 1. 로그 기록 기: 로 컬 하 드 디스크, 시스템 이벤트, 원 격 서버 등에 기록 할 수 있 습 니 다. 사용 자 는 기록 로 그 를 어디 에 기록 할 지 선택 할 수 있 습 니 다.2. 데이터 베 이 스 를 방문 할 때 사용자 가 마지막 시스템 이 어떤 데이터 베 이 스 를 사용 하 는 지 모 르 고 데이터 베이스 가 변화 할 수 있 을 때.기다리다데이터 베 이 스 를 조정 하 는 데 자주 사용 되 는데 데이터 베 이 스 는 종류 가 비교적 많 고 회사 마다 선택 하 는 것 이 다 르 기 때문에 알 아 봐 야 한다.
뒷말
공장 모델 은 우리 프로젝트 에서 자주 사용 하 는 모델 이 라 고 할 수 있다. 주요 한 응용 장면 도 데이터 베 이 스 를 방문 하 는 곳 으로 데이터 베 이 스 를 동적 으로 전환 하 는 효 과 를 얻 을 수 있다.실제 응용 빈도 가 비교적 높 습 니 다. 전환 하지 않 아 도 예약 할 수 있 습 니 다. 후기 확장 (수 동 기지) 글 참고: C \ # 디자인 모델 (3) - 공장 방법 모델 공장 모델

좋은 웹페이지 즐겨찾기