星际争霸php,星际争霸之php简单工厂模式
上次用星际争霸讨论了面向对象的基础知识,似乎面向对象能解决很多问题。
但是还会有很多问题,简单的靠类和对象解决不得太好。
比如如何根据玩家输入的内容(尽管可以转化为其他字符串),来确定要制造的兵种,玩家不会输入代码:new Marine()。
和星际一样,PHP也没有终极兵种,如果类和接口是兵种的话,那么设计模式就是你的战术和控制,它可以让你靠各种兵种的搭配获胜。
待解决的问题:在人族的兵营,我们靠相应玩家的输入来动态确定要造的兵种,假设是机枪兵和火焰兵。
思路:动态的根据传递的数据,新建相应的类的对象。
简单工厂模式示例:
我们把机枪兵类的代码放入一个文件,Marine.php,它的代码如下:
我们把火焰兵类的代码放入一个文件,Firebat.php,它的代码如下:
主文件中的内容如下:create('Marine');
$troop1->attack();
//靠接收参数制造一个机枪兵对象
$troop2 = $creator->create('Firebat');
$troop2->attack();
?>
用途总结:简单工厂模式可以将新建对象的任务进行封装,一旦需要增加新的返回类,只要修改负责新建对象的那部分代码。
实现总结:需要一个自动根据参数返回新建对象的工厂,比如上面兵种制造器BarracksCreator,使用的时候只需要将参数传递给他的生产方法create(),无需考虑具体的生产细节。
星际争霸php,星际争霸之php简单工厂模式相关推荐
- 设计模式之简单工厂模式
一.概述 工厂模式具体包括了简单工厂.工厂方法.抽象工厂,它们是按照从简单到复杂的顺序排列的,属于设计模式中的创建型,其中简单工厂并不属于GOF的23中模式. 但是它是理解其它的工厂模式的一个很好 ...
- 设计模式 之美 -- 简单工厂模式
文章目录 1. 解决问题 2. 应用场景 3. 实现 C++实现: C语言实现 4. 缺点 1. 解决问题 举例如下: 我们实现一个卖衣服的功能,衣服的种类有很多:帽子,裤子,T恤... 每卖一种衣服 ...
- 设计模式之简单工厂模式(Simply Factory)摘录
从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一.简单工厂模式是由一个工厂对象决定创建出哪一种 ...
- Java中的简单工厂模式(转)
Java中的简单工厂模式 举两个例子以快速明白Java中的简单工厂模式: 女娲抟土造人 话说:"天地开辟,未有人民,女娲抟土为人."女娲需要用土造出一个个的人,但在女娲造出人之前, ...
- 《JAVA与模式》之简单工厂模式
在阎宏博士的<JAVA与模式>一书中开头是这样描述简单工厂模式的:简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式.简单工厂模式是由一个工厂 ...
- 简单工厂模式(StaticFactoryMethod)
来华北电力大学数理系LSGO软件技术团队学习Coding,我通常第一个就讲"简单工厂模式",这一讲不仅仅是讲模式,更主要的是让大家体会什么是软件系统的"可复用" ...
- 设计模式之工厂类模式总结对比、简单工厂模式、工厂方法模式、抽象工厂模式、带反射的工厂模式、例子代码分析、最详细
1. 题目 假设某公司同时用SqlServer.MySql数据库,即会切换两数据库(不同数据库的sql语句有些许差异),同时,两数据库里均有对Users.Departments表的操作(sql代码不一 ...
- java工厂模式 uml_简单工厂模式的UML类图与源码实现(转) | 学步园
简单工厂模式的UML图 源码:Operation类 Java代码 packageOperation; publicabstractclassOperation { doublenumberA=0; d ...
- 设计模式(0)简单工厂模式
0 设计模式基础 0.0 设计模式的定义 先来看一下设计模式常见的书面定义: 设计模式是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他 ...
- 大话设计模式之简单工厂模式
一.简单工厂模式 1.起因 最近在看一本大话设计模式一书,感觉上面讲述的富有故事性,引导你一步一步的走进设计模式的世界.首先我先看到的是简单工厂模式,对此我想给自己做一个总结,给自己做一个提示. 2. ...
最新文章
- 自己动手写C语言编译器(3)
- xor eax,eax
- 僵固式思维 OR 成长式思维
- oracle数据导入与导出
- Linux已经霸占了服务器领域
- 试试给对象这样赋值吧
- verilog 数据格式
- vue-cli webpack浅析
- linux 安装vlc源码包,linux Centons 6.5 下yum安装vlc
- 《PHP入门篇之使用教程》
- 准确生成电信、联通、移动IP地址段
- 同步时钟、异步时钟----概念解析
- 台式计算机用手机流量上网,台式机如何使用手机流量上网
- 常用优化网页加载速度方法
- python如何将图片分成不同颜色的区域——三通道彩色图片
- Logisitc Regression 预测员工离职率
- 【软技能:代码之外的生存指南】
- Yapi使用(快速入门)
- 浅谈:3D可视化机房管理系统!
- unity性能最高的Shader:Unlit
热门文章
- 视频教程-达芬奇DAVINCI 14 影视调色大师全套零基础学习到调色综合案例实战视频教程-其他
- Win10怎么安装Apache服务
- 山东省公安厅交通管理局异地容灾系统运维、综合应用平台复制库升级项目
- 020.3.25普及C组 母鸡下蛋(hen)【纪中】【模拟】
- 守卫解救acm_让作家阻止了它的解救
- 腾讯云域名解析:未检测到A记录,请前往您的解析服务商确认解析状态是否正常
- c++ 字符串分割和数字格式化输出
- [音乐] 逆转裁判1~6【五分半无缝衔接】追求组曲
- 电子技术在计算机的应用与未来展望,电子信息技术的应用特点与未来发展趋势研究...
- 京豆薅羊毛新姿势-docker方式