C++디자인 모델 의 공장 방법 모델 의 실현 및 장단 점

3224 단어 c + +공장.패턴
공장 방법 모델 은 간단 한 공장 모델 의 단점 에서 최적화 한 것 이다.우 리 는 간단 한 공장 모델 에서 한 제품 의 유형 을 증가 하거나 감소 하려 면 공장 중의 if-else 판단 을 수정 해 야 한 다 는 것 을 잘 알 고 있다.이렇게 하 는 것 은 분명히 우리 코드 개발 중의 개폐 원칙 에 부합 되 지 않 고 확대 하 는 것 도 매우 번거롭다.
공장 방법 모델=단순 공장 모델+'개폐 원칙'
정의 사상:공장 부 류 는 제품 대상 을 만 드 는 공공 인 터 페 이 스 를 정의 하고 공장 자 류 는 구체 적 인 제품 대상 을 생 성 하 는 것 을 책임 진다.이렇게 하 는 목적 은 제품 류 의 정례 화 작업 을 공장 자 류 로 지연 시 키 는 것 이다.즉,공장 자 류 를 통 해 도대체 어떤 구체 적 인 제품 류 를 예화 해 야 하 는 지 확인 하 는 것 이다.
장점:
  • 구체 적 인 유형 명 을 기억 할 필요 가 없고 심지어 구체 적 인 매개 변수 도 기억 할 필요 가 없다
  • 대상 생 성과 사용 의 분 리 를 실현 했다시스템 의 확장 성 이 더욱 좋아 지고 개폐 원칙 에 부합된다.
    단점:
    시스템 중의 유형 은 쌍 을 이 루어 증가 하여 시스템 의 복잡 도와 이해 도 를 증가 시 켰 다.
    적용 필드:
    클 라 이언 트 는 구체 적 인 제품 류 의 이름 을 알 필요 가 없고 해당 하 는 공장 만 알 면 된다4.567917.관심 류 의 생 성과 실현 에 대한 세부 사항
    코드 구현:(핸드폰 제품)
    
    //    
    class AbstractPhone
    {
    public:
    	virtual void ShowName() = 0;
    };
    
    //  
    class Huawei : public AbstractPhone
    {
    public:
    	virtual void ShowName()
    	{
    		cout << "Huawei Phone" << endl;
    	}
    };
    
    //  
    class Xiaomi : public AbstractPhone
    {
    public:
    	virtual void ShowName()
    	{
    		cout << "Xiaomi Phone" << endl;
    	}
    };
    
    //  
    class Apple : public AbstractPhone
    {
    public:
    	virtual void ShowName()
    	{
    		cout << "Apple Phone" << endl;
    	}
    };
    
    //    
    class AbstractPhoneFactory
    {
    public:
    	virtual AbstractPhone* CreatePhone() = 0;
    };
    
    //    
    class HuaweiFactory : public AbstractPhoneFactory
    {
    public:
    	virtual AbstractPhone* CreatePhone()
    	{
    		return new Huawei();
    	}
    };
    
    //    
    class XiaomiFactory : public AbstractPhoneFactory
    {
    public:
    	virtual AbstractPhone* CreatePhone()
    	{
    		return new Xiaomi();
    	}
    };
    
    //    
    class AppleFactory : public AbstractPhoneFactory
    {
    public:
    	virtual AbstractPhone* CreatePhone()
    	{
    		return new Apple();
    	}
    };
    
    테스트:
    
    void test()
    {
    	//      
    	AbstractPhoneFactory* factory = nullptr;
    	//      
    	AbstractPhone* phone = nullptr;
    
    	//         
    	factory = new HuaweiFactory;
    	//            
    	phone = factory->CreatePhone();
    	phone->ShowName();
    
    	delete phone;
    	delete factory;
    
    	factory = new XiaomiFactory;
    	phone = factory->CreatePhone();
    	phone->ShowName();
    
    	delete phone;
    	delete factory;
    
    	factory = new AppleFactory;
    	phone = factory->CreatePhone();
    	phone->ShowName();
    
    	delete phone;
    	delete factory;
    }
    
    실행 결과:

    총결산
    C++디자인 모델 의 공장 방법 모델 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 C+공장 방법 모델 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

    좋은 웹페이지 즐겨찾기