디자인 모델 의 공장 모델 학습
단순 공장 모델 의 가장 큰 장점 은 공장 류 에 필요 한 논리 적 판단 이 포함 되 어 있다 는 것 이다.클 라 이언 트 의 선택 조건 에 따라 동적 실례 화 와 관련 된 클래스 입 니 다.클 라 이언 트 에서 판단 을 실현 하지 않 으 면 클 라 이언 트 와 의 의존 을 제외 하고.
간단 한 공장 모델 은 계산 류 구조 도 를 실현 한다.
공장 모델 은 계산 류 구조 도 를 실현 한다.
:
#include
using namespace std;
class Operation
{
public:
double num1;
double num2;
public:
Operation(double n1,double n2)
{
num1=n1;
num2=n2;
}
virtual double calculate()=0;
};
class AddOperation:public Operation
{
public:
AddOperation(double n1,double n2)
:Operation(n1,n2)
{
}
virtual double calculate()
{
return num1+num2;
}
};
class SubOperation:public Operation
{
public:
SubOperation(double n1,double n2)
:Operation(n1,n2)
{
}
virtual double calculate()
{
return num1-num2;
}
};
class Factory
{
public:
double n1;
double n2;
public:
Factory(double n1,double n2)
{
this->n1=n1;
this->n2=n2;
}
virtual Operation *CreateOperation()=0;
};
class AddFactory:public Factory
{
public:
AddFactory(double n1,double n2)
:Factory(n1,n2)
{
}
virtual Operation*CreateOperation()
{
return new AddOperation(n1,n2);
}
};
class SubFactory:public Factory
{
public:
SubFactory(double n1,double n2)
:Factory(n1,n2)
{
}
virtual Operation*CreateOperation()
{
return new SubOperation(n1,n2);
}
};
int main(int argc,char**argv)
{
double n1,n2;
cin>>n1>>n2;
cout<calculate()<calculate()<
간단 한 공장 모델 에 있어 서 새로운 계산 기능 류 를 추가 해 야 한다. 예 를 들 어 곱셈 류 는 간단 한 공장 류 에 케이스 분기 조건 을 추가 하고 원래 의 종 류 를 수정 해 야 한다. 이것 은 개방 폐쇄 원칙 에 위배 된다.이 를 바탕 으로 공장 모델 을 도입 했다.
공장 모드: 대상 을 만 드 는 데 사용 할 인 터 페 이 스 를 정의 하여 하위 클래스 가 그 종 류 를 예화 하도록 합 니 다.공장 방법 모델 은 하나의 사례 화 를 하위 클래스 로 지연 시 키 는 것 이다.이때 전체 구 조 는 수정 되 지 않 고 확장 되 는 변화 만 있 을 뿐이다.이것 은 개방 폐쇄 원칙 에 완전히 부합된다.그러나 공장 방법 이 실 현 될 때 클 라 이언 트 는 실례 화 된 어느 공장 이 연산 류 를 실현 하 는 지 판단 해 야 한다.선택 판단 은 여전히 필수 적 이다. 공장 방법 모델 은 간단 한 공장 내부 의 논리 적 판단 을 클 라 이언 트 로 옮 겨 판단 한다.
허풍 디자인 모델 중의 뇌봉 공장 의 예.간단 한 공장 모델 을 사용 할 때 학생 류 나 자원 봉사자 류 를 예화 할 때마다 간단 한 공장 류 의 코드 가 필요 하 다.공장 모델 을 사용 할 때 모든 뇌봉 류 파생 류, 예 를 들 어 학생 류 와 자원 봉사자 류 에 공장 류 를 만들어 해당 하 는 대상 을 만 드 는 데 사용 된다.클래스 를 추가 할 때 코드 만 추가 하면 됩 니 다.개방 폐쇄 원칙 을 잘 구현 하 였 다.
공장 류 와 간단 한 공장 류 는 뇌봉 공장 코드 의 대 비 를 실현 한다.
#include
using namespace std;
class LeiFeng
{
public:
LeiFeng()
{
}
virtual void sweep()=0;
virtual void wash()=0;
virtual void buyRice()=0;
};
class Student:public LeiFeng
{
public:
Student()
{
}
virtual void sweep()
{
std::cout<createLeiFeng(1);
lf->sweep();
lf->wash();
lf->buyRice();
lf=sf->createLeiFeng(2);
lf->sweep();
lf->wash();
lf->buyRice();*/
lf=(new StudentFactory)->CreateLeiFeng();
lf->sweep();
lf->wash();
lf->buyRice();
lf=(new VolunteerFactory)->CreateLeiFeng();
lf->sweep();
lf->wash();
lf->buyRice();
return 0;
}
공장 모델 은 간단 한 공장 모델 이 개방 폐쇄 원칙 에 어 긋 나 는 것 을 극복 하고 포장 대상 의 창설 과정의 장점 을 유지 했다.대상 을 바 꾸 려 면 큰 변경 없 이 이 루어 져 고객 프로그램 과 제품 대상 의 결합 도 를 낮 출 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.