摘要: 8-职责链模式星际的兵种属性随着对平衡性的调节,会进行修改。如果这样的话,我们就要考虑减少一个事件和具体处理的关联性。比如一颗原子弹投下的瞬间,在杀伤范围内的部队或者建筑都会减少血,但是随着距离中心点的远近,受损程度是不同的,而且不同的兵种和建筑受损情况是不同的。待解决的问题:原子弹投下的瞬间,将杀伤的处理分别交给杀伤范围内的部队或者建筑自己的方法处理。思路:建立一个接口,让所有的部队或者建筑实现。职责链模式(Chain of Responsibility)示例:<?php//被原子弹攻击的接口interface NuclearAttacked {//处理被原子弹攻击的方法,参数为投放点 阅读全文
posted @ 2012-05-02 00:52 ﹏Sakura 阅读(465) 评论(0) 推荐(0) 编辑
摘要: 15-状态模式星际的一些兵种会有不止一种状态,比如坦克可以架起来,枪兵可以打兴奋剂,甚至还有一些被动的,比如被虫族女王喷洒绿色液体后,敌人的行动变慢。如果按照一般的思路,每次我们对一个小兵进行操作的时候,比如一辆坦克,我们都要用if判断他的状态,这样代码中会有很多的if,else或者swith。不过我们可以发现,我们需要的是他在某个状态下的行为,如果把这些行为按照状态封装起来,就可以减少大量的判断。待解决的问题:封装坦克的状态,让状态自己去控制行为。思路:把状态作为属性,兵种类本身只控制状态的变化,具体的行为由状态类定义。状态(State)模式示例:<?php//坦克状态的接口inter 阅读全文
posted @ 2012-05-02 00:52 ﹏Sakura 阅读(457) 评论(0) 推荐(0) 编辑
摘要: 1-简单工厂模式不熟悉面向对象的朋友,建议先看看用星际快速入门PHP面向对象编程上次用星际争霸讨论了面向对象的基础知识,似乎面向对象能解决很多问题。但是还会有很多问题,简单的靠类和对象解决不得太好。比如如何根据玩家输入的内容(尽管可以转化为其他字符串),来确定要制造的兵种,玩家不会输入代码:new Marine()。 和星际一样,PHP也没有终极兵种,如果类和接口是兵种的话,那么设计模式就是你的战术和控制,它可以让你靠各种兵种的搭配获胜。待解决的问题:在人族的兵营,我们靠相应玩家的输入来动态确定要造的兵种,假设是机枪兵和火焰兵。思路:动态的根据传递的数据,新建相应的类的对象。简单工厂模式示例: 阅读全文
posted @ 2012-05-02 00:50 ﹏Sakura 阅读(703) 评论(0) 推荐(1) 编辑