디자인 모델 학습 1 - 공장 방법 모델

3980 단어 디자인 모드
며칠 전에 지 웨 이 시대 의 전화 면접 을 받 고 디자인 모델 에 대해 물 었 습 니 다. 이 부분 은 자신 이 알 고 있 을 뿐 익숙 하지 않 아서 대답 하지 못 했 습 니 다. 그래서 지금부터 이 분야 의 지식 을 배우 기로 했 습 니 다. 가장 간단 한 공장 방법 모델 부터 시작 하 겠 습 니 다.
이런 모델 은 사실 Factory 인 터 페 이 스 를 새로 만 드 는 것 이다. 모든 제품 은 각자 의 공장 이 이 인 터 페 이 스 를 계승 하여 서로 다른 제품 을 생산 하 는 것 이다. 과일 을 예 로 들 자.
#include
class Fruit{
public:
    Fruit(){};
    virtual ~Fruit(){};
    virtual void sayHello(void)=0;
    virtual void showColor(void)=0;
};
class Apple:public Fruit{
public:
    Apple(){}
    ~Apple(){}
    void sayHello(void){std::cout<<"I am apple!"<<std::endl;}
    void showColor(void){std::cout<<"My color is red!"<<std::endl;}
};
class Banana:public Fruit{
public:
    Banana(){}
    ~Banana(){}
    void sayHello(void){std::cout<<"I am banana!"<<std::endl;}
    void showColor(void){std::cout<<"My color is yellow!"<<std::endl;}
};
class Factory{
public:
    Factory(){}
    virtual ~Factory(){}
    virtual Fruit* createFruit()=0;
};
class AppleFactory:public Factory{
public:
    AppleFactory(){}
    ~AppleFactory(){}
    Fruit* createFruit(){
        return new Apple();}
};
class BananaFactory:public Factory{
public:
    BananaFactory(){}
    ~BananaFactory(){}
    Fruit* createFruit(){
        return new Banana();}
};
int main()
{
    AppleFactory *af=new AppleFactory();
    Fruit *apple=af->createFruit();
    apple->sayHello();
    apple->showColor();

    BananaFactory *bf=new BananaFactory();
    Fruit *banana=bf->createFruit();
    banana->sayHello();
    banana->showColor();

    delete af;
    delete apple;
    delete bf;
    delete banana;
    return 0;
}

좋은 웹페이지 즐겨찾기