C++디자인 모델 의 간단 한 공장 모델 의 실현 예시
3423 단어 c\#공장 모드
우리 가 대상 을 사용 하려 면 클래스 를 통 해 대상 을 예화 해 야 한다.즉,new 대상 이 필요 하 다.new 의 과정 은 매우 복잡 합 니 다.파일 읽 기->텍스트 해석->대상 만 들 기->속성 값 설정 등 과정 을 거 쳐 야 합 니 다.그리고 공장 모델 을 도입 하 는 것 은 바로 이런 절 차 를 공장 에서 완성 하 는 것 이다.우 리 는 공장 에서 만 든 종 류 를 사용 하면 된다.공장 을 사용 할 때 우 리 는 공장 에 우리 가 원 하 는 대상 을 알려 야 하기 때문에 우 리 는 인삼 을 전달 하 는 방식 으로 공장 에 우리 의 수 요 를 알려 줄 수 있다.
정의 사상:간단 한 공장 모델 에서 매개 변수 에 따라 서로 다른 인 스 턴 스 를 되 돌 릴 수 있 습 니 다.간단 한 공장 모델 은 하나의 클래스 를 정의 하여 다른 종류의 인 스 턴 스 를 만 드 는 것 을 책임 집 니 다.만 든 인 스 턴 스 는 보통 공 통 된 부모 클래스 를 가지 고 있 습 니 다.
장점:
클 라 이언 트 와 구체 적 인 실현 류 의 결합 을 실현 했다클 라 이언 트 는 제품 대상 을 직접 만 드 는 책임 을 면제 하고'소비'제품 제품 만클 라 이언 트 는 만 든 구체 적 인 제품 류 의 유형 을 알 필요 가 없고 구체 적 인 제품 류 에 대응 하 는 매개 변수 만 알 면 된다.
단점:
적용 필드:
4.567917.공장 류 의 설립 을 담당 하 는 대상 이 비교적 적다.
4.567917.클 라 이언 트 는 공장 류 에 들 어 오 는 매개 변수 만 알 고 대상 을 어떻게 만 드 는 지 에 관심 이 없다.
간단 한 공장 모델 은 개폐 원칙 에 부합 되 지 않 기 때문에 큰 사람 은 이 모델 을 24 가지 디자인 모델 에서 제거 했다.
코드 구현(핸드폰 제품)
먼저 추상 적 인 핸드폰 류 를 만 들 고 구체 적 인 제품 의 핸드폰 을 지정 할 때 반드시 지정 한 기능 을 가 져 야 한다.즉,제품 류 는 반드시 이런 유형의 방법 을 다시 써 야 한다.
//
class AbstractPhone
{
public:
virtual void ShowName() = 0;
};
구체 적 인 제품 의 휴대 전 화 는 추상 적 인 휴대 전화 유형 을 계승 하여 그 방법 을 다시 쓴다.
//
class Huawei : public AbstractPhone
{
public:
virtual void ShowName()
{
cout << "Huawe 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 PhoneFactory
{
public:
static AbstractPhone* CreatePhone(string name)
{
if (name == "huawei")
//...
return new Huawei;
else if (name == "xiaomi")
//...
return new Xiaomi;
else if (name == "apple")
//...
return new Apple;
else
return nullptr;
}
};
테스트:
void test()
{
//
PhoneFactory* factor = new PhoneFactory;
//
AbstractPhone* phone;
//
phone = factor->CreatePhone("huawei");
phone->ShowName();
delete phone;
phone = factor->CreatePhone("xiaomi");
phone->ShowName();
delete phone;
phone = factor->CreatePhone("apple");
phone->ShowName();
delete phone;
delete factor;
}
캡 처 실행:총결산
여기 서 C++디자인 모델 에 관 한 간단 한 공장 모델 에 관 한 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 C++간단 한 공장 모델 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!