• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

PHP设计模式之抽象工厂

php 搞代码 4年前 (2022-01-22) 42次浏览 已收录 0个评论

这篇文9来源gaodai#ma#com搞@代~码$网搞gaodaima代码章介绍的内容是关于PHP设计模式之抽象工厂 ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

在学习过工厂方法之后,我所了解的工厂方法基本是去创建一个对象,
例如在玩游戏的时候,创建了一个关羽英雄,一个张飞英雄这样。

但是有时候程序设计时可能需要创建一组对象,这就出现了第二种创建型设计模式–抽象工厂方法(AbstractFactory)
比方说,我在创建关羽的时候手上拿着青龙偃月刀,骑着赤兔马。
创建刘备的时候手上拿着雌雄双剑,骑着的卢马。
那么他们的兵器就需要一个类去实现,马又需要另外一个类去实现。
人物 + 兵器 +坐骑 就成了一个组合。

最后通过一个抽象工厂的模式去实现组合创建。

记录代码如下:

<?php      /** Hero  *  定义一个英雄接口  */  interface Hero  {      function CreateHero();  }    /** GuanYu  *  关羽英雄类  */  Class GuanYu implements Hero  {      function CreateHero()      {           echo "关羽加入战场-->";      }   }    /** LiuBei  *  刘备英雄类  */  Class LiuBei implements Hero  {      function CreateHero()      {           echo "刘备加入战场-->";             }  }      /** Weapon  *  定义一个兵器接口  */  interface Weapon  {      function CreateWeapon();  }    /** GuanYuWeapon  *  青龙偃月刀的类  */  Class GuanYuWeapon implements Weapon  {      function CreateWeapon()      {          echo "手持青龙偃月刀-->";             }  }    /** LiuBeiWeapon  *  雌雄双剑的类  */  Class LiuBeiWeapon implements Weapon  {      function CreateWeapon()      {          echo "手持雌雄双剑-->";              }  }      /** Horse  *  定义一个坐骑接口  */  interface Horse  {      function CreateHorse();  }    /** ChiTu  *  赤兔马类  */  Class ChiTu implements Horse  {      function CreateHorse()      {          echo "脚蹬赤兔马。";        }  }    /** DiLu  *  的卢马类  */  Class DiLu implements Horse  {      function CreateHorse()      {          echo "脚蹬的卢马。";        }     }    /** AbstractFactory  *  抽象工厂接口  为子类建立标准  *  LoadingHero   加载人物类方法  *  LoadingWeapon 加载武器类方法  *  LoadingHorse  加载坐骑类方法  */  interface AbstractFactory  {      function LoadingHero();      function LoadingWeapon();      function LoadingHorse();  }    /** GFactory  *  关羽英雄创建工厂类  用于客户端调用  */  Class GFactory implements AbstractFactory  {      function LoadingHero()      {          return new GuanYu();      }      function LoadingWeapon()      {          return new GuanYuWeapon();      }      function LoadingHorse()      {          return new ChiTu();      }          }    /** LFactory  *  刘备英雄创建工厂类  用于客户端调用  */  Class LFactory implements AbstractFactory  {      function LoadingHero()      {          return new LiuBei();      }      function LoadingWeapon()      {          return new LiuBeiWeapon();      }      function LoadingHorse()      {          return new DiLu();      }     }
<?php     // 抽象工厂模式  index.php    header("Content-Type:text/html;charset=utf-8");    require_once "AbstractFactory.php";    echo "-----------------创建第一个英雄-----------------<br/>";  $GY = new GFactory(); // 调用第一个英雄的工厂    // 加载各自的创建方法  $GYHero = $GY->LoadingHero();  $GYWeapon = $GY->LoadingWeapon();  $GYHorse = $GY->LoadingHorse();    // 生成加入战场  $GYHero->CreateHero();  $GYWeapon->CreateWeapon();  $GYHorse->CreateHorse();    echo "<br/>";    echo "-----------------创建第二个英雄-----------------<br/>";  $LB = new LFactory(); // 调用第一个英雄的工厂    // 加载各自的创建方法  $LBHero = $LB->LoadingHero();  $LBWeapon = $LB->LoadingWeapon();  $LBHorse = $LB->LoadingHorse();    // 生成加入战场  $LBHero->CreateHero();  $LBWeapon->CreateWeapon();  $LBHorse->CreateHorse();

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:PHP设计模式之抽象工厂
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址