摘自<Design Paterns_Elements of Reusable Object-Oriented Software> 上一系列偏重于入门,从本篇开启进阶系列,着重于设计模式的适用情景。 回顾入门系列 设计模式入门(一) 策略模式 1 Intent Define a family of a ...
分类:
其他好文 时间:
2016-03-26 22:12:48
阅读次数:
327
//职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止. //实例:申请费用的功能,不同金额的费用须要由不同的上级部分审核通过,假设下级没有审核的权限那么就让上级来进行审核 //上代码 //定义职
分类:
其他好文 时间:
2016-03-01 20:38:52
阅读次数:
108
//訪问者模式定义:表示一个作用于某对象结构中的各个元素的操作。它使你能够在不改变各元素类的前提下定义作用于这些元素的新操作。 //从定义上看,这个模式跟装饰模式的定义非常类似(动态地给一个对象加入一些额外的职责)。可是装饰模式很多其它是在原有的基础上进行功能加强或者改动;而訪问者模式很多其它是为对
分类:
其他好文 时间:
2016-02-27 19:19:16
阅读次数:
197
//装饰模式定义:动态地给一个对象加入一些额外的职责。//就添加功能来说。装饰模式比生成子类更为灵活//这也提现了面向对象设计中的一条基本原则,即:尽量使用对象组合,而不是对象继承//Component:组件对象的接口。能够给这些对象动态加入职责//ConcreateComponet:详细的组件对象...
分类:
其他好文 时间:
2015-12-22 21:13:59
阅读次数:
259
代码多了以后,如果设计不好,层次混乱那么必然会导致维护困难。
感慨:
师兄给我分配的任务是写日志系统。
我的步骤是:设计好要写入哪些内容,然后直接用最简单的方法获取到,写入。
结果:
1. 代码风格太差(主要是层次混乱)
2. 数据存放混乱,一些常量设置/配置项我都写的不是地方或者写到程序代码中了。
深深体会到设计的重要性!
因此自己在设计的时候需要考虑这...
分类:
其他好文 时间:
2015-08-02 20:06:28
阅读次数:
179
对于这个模式的应用场景不是太好总结,只是根据之前的经验,注册表类里面经常会存储一些别的地方需要用到的对象,比如redis、memcache类,还比如配置信息config类等,它扮演的是一个类似于全局变量的角色。具体的实现其实非常简单,如下代码所示:
<?php
class Registry{
static $instance;
public $containers = a...
分类:
Web程序 时间:
2015-07-29 23:07:05
阅读次数:
206
在日常开发过程中,常常会遇到有些类是不需要重复实例化的,比如数据库连接,在这种情况下,单例模式就是最佳的解决方案。正好上次面试也有被问及这个模式,今天在这里做个总结。
先来看一个最简单的单例模式的实现:
<?php
class Singleton{
static $instance;
static function getInstance(){
if(...
分类:
Web程序 时间:
2015-07-29 23:06:40
阅读次数:
207
//备忘录模式定义://在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。//这样以后就能够将该对象恢复到原先保存的状态//实例:測试两种方案。两种方案在第一阶段的过程是同样的,第二阶段是不同的//实例代码//备忘录对象的窄接口public interface FlowAM...
分类:
其他好文 时间:
2015-07-21 21:55:44
阅读次数:
142
学习正式的设计模式前,先来个开胃菜,即简单工厂模式。下面将利用简单工厂模式设计一个计算器小程序:一、运算基类(Operation)1 public abstract class Operation2 {3 public double NumA { set; get; ...
分类:
其他好文 时间:
2015-06-08 13:09:50
阅读次数:
131
这本书读起来很有意思,插图很多,对话形式的内容,让人很有代入感。第1章 设计模式入门主要通过一个鸭子的例子向读者说明了设计模式的思想,提到了三个设计原则。找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起针对接口编程,而不是针对实现编程多用组合,少用继承(组合有更大的弹性...
分类:
其他好文 时间:
2015-06-02 00:06:22
阅读次数:
170