工厂方法模式(Factory Methond)案例分析

案例分析:

工厂方法定义一个用于创建对象的接口,但是让子类决定实例化哪个类。压注成型演示了这种模式。塑料玩具制造商加工塑料粉,将塑料注入到希望形状的模具中。玩具的类别(车,人物等等)是由模具决定的。

意图:

它的用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。在工厂方法模式中,核心的工厂类不再负责所有的产品的创建,而是将创建的工作交给子类去做。这个核心类成为一个抽象工厂的角色,仅负责给出具体工厂子类必须实现的接口,而不接触哪一个产品类实例化的细节。

结构图:

程序代码:

#include <iostream.h>

 

class cMaMoJu

{

public:

     cMaMoJu()

     {

         cout<<"生产玩具马模具"<<endl;

     }

};

 

class cCheMoJu

{

public:

     cCheMoJu()

     {

         cout<<"生产模具车模具"<<endl;

     }

};

 

class cWanJuGongChang

{

public:

     void ZhiZaoWanJu()

     {

         MakeMoJu();

         ZhuFen();

         MeiHua();

     }

protected:

     virtual void MakeMoJu()=0;

    virtual void ZhuFen()=0;

     virtual void MeiHua()=0;

};

 

class cWanJuMaGongChang:public cWanJuGongChang

{

protected:

      void MakeMoJu()

      {

          cMaMoJu obj;

      }

     void ZhuFen()

      {

          cout<<"给该模具注入材料,使其成形"<<endl;

      }

      void MeiHua()

      {

          cout<<"美化产品,完成产品生产"<<endl;

      }

};

 

class cWanJuCheGongChang:public cWanJuGongChang

{

protected:

      void MakeMoJu()

      {

          cCheMoJu obj;

      }

     void ZhuFen()

      {

           cout<<"给该模具注入材料,使其成形"<<endl;

      }

      void MeiHua()

      {

          cout<<"美化产品,完成产品生产"<<endl;

      }

};

 

int main()

{

    cWanJuGongChang* obj=new cWanJuMaGongChang;

     obj->ZhiZaoWanJu();

 

     cout<<endl;

 

     obj=new cWanJuCheGongChang();

     obj->ZhiZaoWanJu();

     return 0;

}

运行结果:

生产玩具马模具

给该模具注入材料,使其成形

美化产品,完成产品生产

 

生产模具车模具

给该模具注入材料,使其成形

美化产品,完成产品生产

Press any key to continue

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值