내가인터페이스 클래스의 파생 클래스를 선택하려면 코드를 숨기시겠습니까?
class car {
public:
virtual void move(double x, double y) = 0;
// etc etc
};
같은 인터페이스 클래스와
class model8556 : virtual public car {
private:
void move(double x, double y) {
// ...
}
// etc etc
};
같은 파생 클래스를 많이 가지고 있고 좋은 방법은 거기에있다
car* myCar;
switch (foo) {
case 1: myCar = new model3434(); break;
case 2: myCar = new model8295(); break;
// etc
}
를 통해 모델을 선택 가정 수 있습니다 스위치 코드를 숨기고 car
클래스 자체로 옮길 수 있습니까? car
주위에 또 다른 클래스 (?)를 래핑 할 수 있습니다 (또는 전역 함수로 전환 코드를 이동 하시겠습니까?).하지만 좀 더 우아한 것이 있는지 궁금합니다.
도움을 주시면 감사하겠습니다.
"공장"패턴과 같은 것은 실제로 까다롭지 않습니다. 인식 된 패턴은 [Factory Method] (http://en.wikipedia.org/wiki/Factory_method_pattern) 패턴과 [Abstract Factory] (http://en.wikipedia.org/wiki/Abstract_factory_pattern) 패턴입니다. 당신이 말하는 것은 "[단순한 공장] (http://my.safaribooksonline.com/book/software-engineering-and-development/patterns/0596007124/4dot-the-factory-pattern-baking-) with-oo-goodness/simple_factory_defined_html) "이디엄. –
@ChrisDrew, 질문을하는 사람의 이익을 위해 항상 패턴 특유의 미세한 점에 대해 토론하고 있습니다. '공장 패턴'이라는 단어가 자신의 시간에 자신의 인터넷 검색을 허용한다는 것을 알고 있습니다. . –
'factory :: create'는 틀림없이 어쨌든 클래스에있는 이유는 무엇입니까? – doctorlove