设计模式学习1-工厂方法模式

来源:互联网 发布:淘宝评价好评怎么修改 编辑:程序博客网 时间:2024/06/06 02:59

前几天接到吉威时代电话面试,问了一个设计模式的问题,这方面自己只是了解,但不是很熟悉,所以没回答上,于是决定现在开始学习这方面的知识,先从最简单的工厂方法模式开始:

这种模式其实就是新建一个Factory接口,每个产品都有各自的工厂继承自该接口,来生产不同的产品,以水果为例:

#include<iostream>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;}
0 0
原创粉丝点击