2.简单工厂模式

使用时机:当一系列功能存在类似操作的时,而它的实现功能又可能扩展增加新类时,且无须修改客户端(即应用部分)。

简单工厂模式即为:

把操作实例通过工厂创建接口创建出来,使用者只使用一个标准的操作接口而非实际应用。这个的好处是操作接口内部任意的改变或扩展都不会影响到调用者。

 

如:

class Object

{

public:

      // 对象死亡操作

      virtual void Dead() = 0;

private:

       int m_nHP;

       int m_nMP;

};

 

class Npc :

    public Object

{

public:

     void void Dead() { printf( "NPC:%d已经死亡!", m_nId ); }

 private:

      int m_nId;

};

 

class Player:

    public Object

{

public:

     void void Dead() { printf( "玩家:%d已经死亡!", m_nId ); }

 private:

      int m_nId;

};

 

class Monster:

    public Object

{

public:

     void void Dead() { printf( "怪物:%d已经死亡!", m_nId ); }

 private:

      int m_nId;

};

 

class ObjFactory
{
public:

 static Object CraeteObject( int type )
 {
  switch( type )
  {
  case 1: // 玩家
   {
    return new Player();
   }
   break;

  case 2: // 怪物
   {
    return new Monster();
   }
   break;

  case 3: // NPC
   {
    return NPC();
   }
  default:
   ;
  }
 }

};

 

// 这里只用利用多态提供一个Object的接口而非实际的 Player 对象,这个

// 就算Player内部改变也不会影响到这里

// 创建玩家

Object obj = ObjFactory.CraeteObject( 1 );

obj.Dead();

 

// 创建NPC

Object obj = ObjFactory.CraeteObject( 3 );

obj.Dead();

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值