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