공장 방법
Design patterns should not be applied indiscriminately. Often they achieve flexibility and variability by introducing additional levels of indirection, and that can complicate a design and/or cost you some performance. A design pattern should only be applied when the flexibility it affords is actually needed - Erich Gamma
소개
소프트웨어 개발의 가장 큰 과제 중 하나는 손쉬운 확장성, 유지 관리 및 유연성을 가능하게 하는 코드를 작성하는 방법입니다.
이 문제에 대한 한 가지 해결책은 누구나 쉽게 이해하고 기여할 수 있도록 깨끗하고 체계적인 코드를 작성하는 모범 사례 지침인 디자인 패턴을 사용하는 것입니다.
디자인 패턴은 크게 4가지로 나눌 수 있습니다.
생성 범주에는 다음과 같은 다섯 가지 방법이 있습니다.
오늘 우리는 Factory 방법에 초점을 맞출 것입니다!
팩토리 메소드란?
팩터리 메서드는 관련 객체의 생성을 캡슐화하여 객체를 생성하는 인터페이스를 제공하지만 생성을 하위 클래스로 연기합니다. 이것은 가장 많이 사용되는 방법 중 하나이며 그 이유는 다음과 같습니다.
구조
팩토리 메소드에는 세 가지 구조가 있습니다.
관행
여기서 우리는 다양한 유형의 암석을 생성해야 하는 게임의 매우 간단한 예를 통해 Factory Method를 사용하는 방법을 배웁니다. 처음에는 소형 및 중형의 두 가지 유형의 암석이 있습니다. 코드가 작성되는 방식은 새로운 유형의 암석(예: Big, Iron)을 등록하는 것이 매우 쉬울 것입니다.
#include <iostream>
using namespace std;
//Class creator
class rock {
public:
rock(){}
char *getType(){
return _type;
}
};
//Concrete product
class smallRock:public rock{
public:
smallRock(){
//_type = "Small";
cout << "\nSmall rock created" << endl;
}
};
//Concrete product
class midRock:public rock{
public:
midRock(){
//_type = "mid";
cout<<"\nMid rock created" << endl;
}
};
/*Creator concrete*/
class rockFactoryCreator{
public:
rock *GetRock(){
int choice;
cout << "Select type of rock to make: " << endl;
cout << "1: Small" << endl;
cout << "2: Mid" << endl;
cout << "Selection: ";
cin >> choice;
switch (choice)
{
case 1:
return new smallRock;
case 2:
return new midRock;
default:
cout << "Invalid Selection" << endl;
return NULL;
}
}
};
int main()
{
rockFactoryCreator rockCreator;
rock *asteroid;
asteroid = rockCreator.GetRock();
system("PAUSE");
return 0;
}
Reference
이 문제에 관하여(공장 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jgsnto/factory-method-3559텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)