设计模式
文章平均质量分 72
acmer1183
这个作者很懒,什么都没留下…
展开
-
模板
叙述 示例 <?php /** * 模板方法模式: * 在抽象类中定义一个final 的模板方法,定义一个业务逻辑,使其不能被子类修改 * 具体的每个操作的方法声明为抽象方法,每个子类根据自己的业务定义自己的操作 * 钩子用来让子类控制父类的一部分逻辑 */ /** * 抽象类 */ abstract class AbstractBank { private原创 2015-03-19 14:39:06 · 285 阅读 · 0 评论 -
代理
叙述 示例 <?php interface Weater { public function request($city); public function display($city); public function isValidCity($city); } class RealWeater implements Weater { prote原创 2015-03-19 14:34:39 · 263 阅读 · 0 评论 -
适配器
类适配 <?php interface Target { public function hello(); public function world(); } class Adaptee { public function greet() { print_ln(__METHOD__); } public function w原创 2015-03-19 14:45:34 · 224 阅读 · 0 评论 -
访问者
叙述 示例 <?php /** * 对一组(不是一个,是一组)对象提供一种算法,算法可能会变,抽象出算法 * 使得更换算法和新增算法可扩展 * 需要每个访问者对每一个元素提供一个接口,对该元素提供一种访问算法,当新增元素时,违背了开闭原则 * 如果元素种类不变,只对算法扩展,则会好点 */ interface Visitor { public function visitG原创 2015-03-19 14:43:30 · 300 阅读 · 0 评论 -
职责链
叙述 示例 <?php /** * 职责链的组织可写在配置文件里 * 每个职责类可对同一个请求选择性的处理,之后可交由下一个类处理,也可终止 * 抽象出职责类 Handler,每个具体的职责类处理各自的事情 */ abstract class Handler { protected $_handlerName = null; protected $_nextHand原创 2015-03-19 14:41:57 · 226 阅读 · 0 评论 -
策略
叙述 示例 <?php /** * 抽象算法,算法的选择交给Client */ interface TravelStrategy { public function travelAlgorithm(); } class AirPlanelStrategy implements TravelStrategy { public function travelAlgor原创 2015-03-19 14:41:16 · 318 阅读 · 0 评论 -
创建者
叙述 示例 <?php /** * 掌握生产步骤,生产工序(需要哪几步) */ class Director { public static function buildFood(Builder $builer) { $builer->hamburger(); $builer->drink(); return $builer原创 2015-03-19 14:36:49 · 356 阅读 · 0 评论 -
观察者
叙述 示例 <?php /** * 这一模式的概念是SplSubject类维护了一个特定状态,当这个状态发生变化时,它就会调用notify()方法。 * 调用notify()方法时,所有之前使用attach()方法注册的SplObserver实例的update方法都会被调用。 * */ /* interface SplSubject{ public func原创 2015-03-19 14:42:07 · 319 阅读 · 0 评论 -
外观
叙述 示例 <?php /** * 外观类,封装子系统对外提供的接口 * 只是封装接口,尽量不要在这个类里添加子系统的行为 * 这里只是组合子系统的方法,拼接成一个完善的操作,以简化client对子系统的访问 * 降低子系统和client之间的耦合 */ class SwitchFacade { private $_light = null;原创 2015-03-19 14:38:30 · 262 阅读 · 0 评论 -
命令
叙述 示例 <?php /** * 抽象出命令,简化命令调用类的设计,并且命令本身可扩展 * 与中介模式的区别是,中介模式是多对多对象通信的抽象,把多对多的关系转换成一对多,更容易维护 * 并且减少了对象的数目 * 命令模式是对调用对象方法的抽象,对命令的抽象,对命令的接收者没有改变,简化了命令的发出者的设计 * 命令的发出者只对命令接口进行设计 */ interface ICo原创 2015-03-19 14:37:56 · 279 阅读 · 0 评论 -
装饰器
叙述 待续 示例代码 <?php abstract class Component { public abstract function execute(); } class ConcerteComponent extends Component { public function execute() { // do something ..原创 2015-03-19 14:41:02 · 285 阅读 · 0 评论