抽象工厂模式(Abstract Factory)案例分析

案例分析:

        每台汽车都要有发动机和轮胎等部件,但不同品牌的汽车所用的部件应该是不同的,汽车生产厂可以有不同的生产线,每个生产线负责生产某一型号的汽车部件。例如某厂有两条生产线,一条生产宝马的部件,一条生产宝莱车的部件。客户要买什么车,就启动相应的生产线。

 

意图:

         提供一个创建一系列相关会相互依赖对象的接口,而无须制定他们具体的类。这里结合案例将创建两条生产线,分别生产宝马和宝莱汽车的轮胎和引擎。

 

结构图:

 

 

 

程序代码:

#include <iostream.h>

 

class LunTai

{

public:

     virtual void display()=0;

};

class YinQing

{

public:

     virtual void display()=0;

};

//

class BaoMaCarLunTai:public LunTai

{

public:

     void display()

     {

         cout<<"宝马轮胎!"<<endl;

     }

};

class BaoCaiCarLunTai:public LunTai

{

public:

     void display()

     {

         cout<<"宝菜轮胎!"<<endl;

     }

};

//

class BaoMaCarYinQing:public YinQing

{

public:

     void display()

     {

         cout<<"宝马引擎!"<<endl;

     }

};

class BaoCaiCarYinQing:public YinQing

{

public:

     void display()

     {

         cout<<"宝菜引擎!"<<endl;

     }

};

//

class CarFactory

{

public:

     virtual LunTai* getCarLunTai()=0;

     virtual YinQing* getCarYinQing()=0;

};

class BaoMaCarFactory:public CarFactory

{

public:

    LunTai* getCarLunTai()

     {

         return new BaoMaCarLunTai;

     }

    YinQing* getCarYinQing()

     {

         return new BaoMaCarYinQing;

     }

};

class BaoCaiCarFactory:public CarFactory

{

public:

    LunTai* getCarLunTai()

     {

         return new BaoCaiCarLunTai;

     }

    YinQing* getCarYinQing()

     {

         return new BaoCaiCarYinQing;

     }

};

 

int main()

{

     BaoMaCarFactory BaoMaFactory;

     BaoMaCarLunTai* BaoMaLunTai=(BaoMaCarLunTai*)BaoMaFactory.getCarLunTai();

     BaoMaLunTai->display();

     BaoMaCarYinQing* BaoMaYinQing=(BaoMaCarYinQing*)BaoMaFactory.getCarYinQing();

     BaoMaYinQing->display();

 

     BaoCaiCarFactory BaoCaiFactory;

     BaoCaiCarLunTai* BaoCaiLunTai=(BaoCaiCarLunTai*)BaoCaiFactory.getCarLunTai();

     BaoCaiLunTai->display();

     BaoCaiCarYinQing* BaoCaiYinQing=(BaoCaiCarYinQing*)BaoCaiFactory.getCarYinQing();

     BaoCaiYinQing->display();

     return 1;

}

 

运行结果:

宝马轮胎!

宝马引擎!

宝菜轮胎!

宝菜引擎!

Press any key to continue

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值