随笔分类 -  php设计模式

摘要:适配器模式:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原来由于接口不兼容而不能一起工作的那此类可以一起工作。主要角色:Target(目标角色):客户希望使用的接口,需要适配成这个接口。Adaptee(源角色):被适配的接口,需要进行适配的接口。Adapter(适配角色):对A... 阅读全文
posted @ 2015-08-09 10:26 leezhxing 阅读(233) 评论(0) 推荐(0) 编辑
摘要:命令模式:将一个请求封装为一个对象,从而使用你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。命令模式是对命令的封装。命令模式把发出命令的责任和执行命令的责任分割开,委派给不同的对象。请求的一方发出请求要求执行一个操作;接收的一方收到请求,并执行操作。命令模式允许请求... 阅读全文
posted @ 2014-12-18 20:31 leezhxing 阅读(269) 评论(0) 推荐(0) 编辑
摘要:原型模式:通过clone原型创建新的对象,不需要知道任何创建的细节。思维导图:抽象原型(Prototype)角色:声明一个克隆自身的接口。具体原型(Concrete Prototype)角色:实现一个克隆自身的操作。代码:_property = $property; } ... 阅读全文
posted @ 2014-12-18 17:33 leezhxing 阅读(232) 评论(0) 推荐(1) 编辑
摘要:代理模式:为其他对象提供一种代理以控制对这个对象的访问。代理模式是对象的结构模式,代理模式给某一个对象提供一个代理对象,并由此代理对象控制对原代理对象的引用。代理模式不应该让用户感觉到代理的存在,所以代理对象和原对象的对外的调用接口是一致的。代理模式一般包括三个角色:抽象主题角色(Subject):... 阅读全文
posted @ 2014-12-17 18:32 leezhxing 阅读(290) 评论(0) 推荐(0) 编辑
摘要:组合模式:将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。在数据结构里面,树结构是很重要,我们可以把树的结构应用到设计模式里面,例如多级树形菜单,文件和文件夹目录。思维导图:构件模式的组成:抽象构件角色(component):是组合... 阅读全文
posted @ 2014-12-17 16:55 leezhxing 阅读(242) 评论(0) 推荐(0) 编辑
摘要:职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。UML:Client:客户端Handler: 抽象处理者:定义出一个处理请求的接口。如果需要,接口可以定义出一个方法以设定和返回对下家的引用。这... 阅读全文
posted @ 2014-12-16 20:29 leezhxing 阅读(301) 评论(0) 推荐(0) 编辑
摘要:装饰着模式装饰者模式动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。案例有这样一个项目,做一个餐厅订餐系统。起初的代码结构是这样的。前面有很多Beverage的继承类,现在遇到的问题是牛奶的价钱上涨了,那么所有相关的类,我们都要进行调整,比如Milk,SugarAndM... 阅读全文
posted @ 2014-12-16 17:51 leezhxing 阅读(213) 评论(0) 推荐(0) 编辑
摘要:观察者模式:定义对象的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。设计原则:在观察者模式中,会改变的是主题(被观察者)的状态以及观察者的数目。用这个模式,你可以改变依赖于主题状态的对象,却不必改变主题。——找出程序中会变化的方面,然后将其和固定不变的方面相分离!... 阅读全文
posted @ 2014-12-16 16:31 leezhxing 阅读(386) 评论(0) 推荐(0) 编辑
摘要:策略模式帮助构建的对象不必自身包含逻辑,而是能够根据需要利用其他对象中的算法。将一组特定的行为和算法封装成类,以适应某些特定的上下文环境。使用场景:一个电商网站的广告位要根据性别展示不同的广告,硬编码的话就是if(男士){}else(女士){},使用策略模式可以避免在类中出现逻辑判断。一个数据输出类... 阅读全文
posted @ 2014-12-16 13:01 leezhxing 阅读(195) 评论(0) 推荐(0) 编辑
摘要:单例模式:通过提供自身共享实例的访问,单例设计模式用于限制特定对象只能被创建一次。使用场景:一般数据库实例都会用单例模式实现:单例设计模式就是要一个类只能实例化一个对象。要想让一个类只能实例化一个对象,就要让类先不能实例化对象,就是构造方法私有。现在,要想实例化该类必须通过访问静态方法来实例化改类为... 阅读全文
posted @ 2014-04-05 17:19 leezhxing 阅读(1275) 评论(0) 推荐(0) 编辑