上次用星际争霸讨论了面向对象的基础知识,似乎面向对象能解决很多问题。

但是还会有很多问题,简单的靠类和对象解决不得太好。

比如如何根据玩家输入的内容(尽管可以转化为其他字符串),来确定要制造的兵种,玩家不会输入代码:new Marine()。

和星际一样,PHP也没有终极兵种,如果类和接口是兵种的话,那么设计模式就是你的战术和控制,它可以让你靠各种兵种的搭配获胜。

待解决的问题:在人族的兵营,我们靠相应玩家的输入来动态确定要造的兵种,假设是机枪兵和火焰兵。

思路:动态的根据传递的数据,新建相应的类的对象。

简单工厂模式示例:

我们把机枪兵类的代码放入一个文件,Marine.php,它的代码如下:

我们把火焰兵类的代码放入一个文件,Firebat.php,它的代码如下:

主文件中的内容如下:create('Marine');

$troop1->attack();

//靠接收参数制造一个机枪兵对象

$troop2 = $creator->create('Firebat');

$troop2->attack();

?>

用途总结:简单工厂模式可以将新建对象的任务进行封装,一旦需要增加新的返回类,只要修改负责新建对象的那部分代码。

实现总结:需要一个自动根据参数返回新建对象的工厂,比如上面兵种制造器BarracksCreator,使用的时候只需要将参数传递给他的生产方法create(),无需考虑具体的生产细节。

星际争霸php,星际争霸之php简单工厂模式相关推荐

  1. 设计模式之简单工厂模式

    一.概述 工厂模式具体包括了简单工厂.工厂方法.抽象工厂,它们是按照从简单到复杂的顺序排列的,属于设计模式中的创建型,其中简单工厂并不属于GOF的23中模式.   但是它是理解其它的工厂模式的一个很好 ...

  2. 设计模式 之美 -- 简单工厂模式

    文章目录 1. 解决问题 2. 应用场景 3. 实现 C++实现: C语言实现 4. 缺点 1. 解决问题 举例如下: 我们实现一个卖衣服的功能,衣服的种类有很多:帽子,裤子,T恤... 每卖一种衣服 ...

  3. 设计模式之简单工厂模式(Simply Factory)摘录

    从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一.简单工厂模式是由一个工厂对象决定创建出哪一种 ...

  4. Java中的简单工厂模式(转)

    Java中的简单工厂模式 举两个例子以快速明白Java中的简单工厂模式: 女娲抟土造人 话说:"天地开辟,未有人民,女娲抟土为人."女娲需要用土造出一个个的人,但在女娲造出人之前, ...

  5. 《JAVA与模式》之简单工厂模式

    在阎宏博士的<JAVA与模式>一书中开头是这样描述简单工厂模式的:简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式.简单工厂模式是由一个工厂 ...

  6. 简单工厂模式(StaticFactoryMethod)

    来华北电力大学数理系LSGO软件技术团队学习Coding,我通常第一个就讲"简单工厂模式",这一讲不仅仅是讲模式,更主要的是让大家体会什么是软件系统的"可复用" ...

  7. 设计模式之工厂类模式总结对比、简单工厂模式、工厂方法模式、抽象工厂模式、带反射的工厂模式、例子代码分析、最详细

    1. 题目 假设某公司同时用SqlServer.MySql数据库,即会切换两数据库(不同数据库的sql语句有些许差异),同时,两数据库里均有对Users.Departments表的操作(sql代码不一 ...

  8. java工厂模式 uml_简单工厂模式的UML类图与源码实现(转) | 学步园

    简单工厂模式的UML图 源码:Operation类 Java代码 packageOperation; publicabstractclassOperation { doublenumberA=0; d ...

  9. 设计模式(0)简单工厂模式

    0 设计模式基础 0.0 设计模式的定义 先来看一下设计模式常见的书面定义: 设计模式是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他 ...

  10. 大话设计模式之简单工厂模式

    一.简单工厂模式 1.起因 最近在看一本大话设计模式一书,感觉上面讲述的富有故事性,引导你一步一步的走进设计模式的世界.首先我先看到的是简单工厂模式,对此我想给自己做一个总结,给自己做一个提示. 2. ...

最新文章

  1. 自己动手写C语言编译器(3)
  2. xor eax,eax
  3. 僵固式思维 OR 成长式思维
  4. oracle数据导入与导出
  5. Linux已经霸占了服务器领域
  6. 试试给对象这样赋值吧
  7. verilog 数据格式
  8. vue-cli webpack浅析
  9. linux 安装vlc源码包,linux Centons 6.5 下yum安装vlc
  10. 《PHP入门篇之使用教程》
  11. 准确生成电信、联通、移动IP地址段
  12. 同步时钟、异步时钟----概念解析
  13. 台式计算机用手机流量上网,台式机如何使用手机流量上网
  14. 常用优化网页加载速度方法
  15. python如何将图片分成不同颜色的区域——三通道彩色图片
  16. Logisitc Regression 预测员工离职率
  17. 【软技能:代码之外的生存指南】
  18. Yapi使用(快速入门)
  19. 浅谈:3D可视化机房管理系统!
  20. unity性能最高的Shader:Unlit

热门文章

  1. 视频教程-达芬奇DAVINCI 14 影视调色大师全套零基础学习到调色综合案例实战视频教程-其他
  2. Win10怎么安装Apache服务
  3. 山东省公安厅交通管理局异地容灾系统运维、综合应用平台复制库升级项目
  4. 020.3.25普及C组 母鸡下蛋(hen)【纪中】【模拟】
  5. 守卫解救acm_让作家阻止了它的解救
  6. 腾讯云域名解析:未检测到A记录,请前往您的解析服务商确认解析状态是否正常
  7. c++ 字符串分割和数字格式化输出
  8. [音乐] 逆转裁判1~6【五分半无缝衔接】追求组曲
  9. 电子技术在计算机的应用与未来展望,电子信息技术的应用特点与未来发展趋势研究...
  10. 京豆薅羊毛新姿势-docker方式