C++디자인 모델 의 추상 적 인 공장 모델

추상 공장 모드
패턴 정의
추상 적 인 공장 모델(Abstract Factory)은 일련의 관련 되 거나 서로 의존 하 는 대상 을 만 드 는 인 터 페 이 스 를 제공 합 니 다.구체 적 인 종 류 를 지정 하지 않 아 도 됩 니 다.
모드 동기
보통 운영 시간 에 Concrete Factory 류 의 인 스 턴 스 를 만 듭 니 다.이 구체 적 인 공장 은 특정한 실현 을 가 진 제품 대상 을 다시 만 듭 니 다.즉,서로 다른 제품 대상 을 만 들 기 위해 클 라 이언 트 는 서로 다른 구체 적 인 공장 을 사용 해 야 합 니 다.
UML 도표

소스 코드 구현
abstractproducta.h

#include <string>

class AbstracProductA
{
public:
 AbstracProductA();
 virtual ~AbstracProductA();

 void Show();
 virtual std::string Name();
};

class ConcreteProductA1 : public AbstracProductA
{
public:
 ConcreteProductA1();
 std::string Name() override;
};

class ConcreteProductA2 : public AbstracProductA
{
public:
 ConcreteProductA2();
 std::string Name() override;
};
abstractfactory.h

#include "abstracproducta.h"
#include "abstracproductb.h"

class AbstractFactory
{
public:
 AbstractFactory();
 virtual ~AbstractFactory();

 virtual AbstracProductA* CreateProductA() = 0;
 virtual AbstracProductB* CreateProductB() = 0;
};

class ConcreteFactory1 : public AbstractFactory
{
public:
 ConcreteFactory1();

 AbstracProductA* CreateProductA() override;
 AbstracProductB* CreateProductB() override;
};

class ConcreteFactory2 : public AbstractFactory
{
public:
 ConcreteFactory2();

 AbstracProductA* CreateProductA() override;
 AbstracProductB* CreateProductB() override;
};
main.cpp

#include <iostream>
#include "abstractfactory.h"
#include "abstracproducta.h"
#include "abstracproductb.h"

using namespace std;

int main()
{
 AbstractFactory* factory1 = new ConcreteFactory1();
 AbstracProductA* pA1 = factory1->CreateProductA();
 AbstracProductB* pB1 =factory1->CreateProductB();

 pA1->Show();
 pB1->Show();

 AbstractFactory* factory2 = new ConcreteFactory2();
 AbstracProductA* pA2 = factory2->CreateProductA();
 AbstracProductB* pB2 =factory2->CreateProductB();

 pA2->Show();
 pB2->Show();

 return 0;
}
실행 결과
장점.
추상 적 인 공장 모델 의 장점
4.567917.좋 은 점 은 제품 시 리 즈 를 교환 하기 쉽다 는 것 이다.구체 적 인 공장 류 로 인해 한 응용 에서 초기 화 할 때 한 번 만 나타 나 면 백 년 동안 응용 되 는 구체 적 인 공장 이 매우 쉬 워 지고 구체 적 인 공장 만 바 꾸 면 서로 다른 생산 품 배 치 를 사용 할 수 있다4.567917.이 는 구체 적 인 인 인 스 턴 스 생 성 과정 과 클 라 이언 트 를 분리 시 켰 다.클 라 이언 트 는 그들의 추상 적 인 인 인 터 페 이 스 를 통 해 인 스 턴 스 를 조작 하고 제품 의 구체 적 인 유형 도 구체 적 인 공장 에 의 해 분리 되 어 고객 코드 에 나타 나 지 않 는 다결점.
패턴 의 단점
4.567917.간단 한 공장 을 사용 하 는 모든 곳 에서 반사 기술 로 switch 나 if 를 제거 하고 분기 판단 에 의 한 결합 을 고려 할 수 있다깨닫다
프로그래머 가 만약 에 밤 을 새 워 프로그램 을 쓴 경험 이 없다 면 좋 은 프로그램 원숭이 라 고 할 수 없다.왜냐하면 그 는 푹 빠 진 적 이 없 기 때문에 그 는 큰 성 과 를 거두 지 못 할 것 이다.
여기 서 C++디자인 모델 이 추상 적 인 공장 모델 을 실현 하 는 것 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 C+추상 적 인 공장 모델 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 우 리 를 많이 지지 해 주시 기 바 랍 니 다!

좋은 웹페이지 즐겨찾기