디자인 모델 의 공장 모델 학습

3629 단어
간단 한 공장 모델 에 비해 공장 모델 은 각 유형 에 공장 류 를 추가 했다.모든 공장 류 는 그 에 대응 하 는 클래스 의 대상 지침 을 되 돌려 준다.
단순 공장 모델 의 가장 큰 장점 은 공장 류 에 필요 한 논리 적 판단 이 포함 되 어 있다 는 것 이다.클 라 이언 트 의 선택 조건 에 따라 동적 실례 화 와 관련 된 클래스 입 니 다.클 라 이언 트 에서 판단 을 실현 하지 않 으 면 클 라 이언 트 와 의 의존 을 제외 하고.
간단 한 공장 모델 은 계산 류 구조 도 를 실현 한다.
공장 모델 은 계산 류 구조 도 를 실현 한다.
#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;
}

공장 모델 은 간단 한 공장 모델 이 개방 폐쇄 원칙 에 어 긋 나 는 것 을 극복 하고 포장 대상 의 창설 과정의 장점 을 유지 했다.대상 을 바 꾸 려 면 큰 변경 없 이 이 루어 져 고객 프로그램 과 제품 대상 의 결합 도 를 낮 출 수 있다.

좋은 웹페이지 즐겨찾기