2012-07-19 07:51
⁄ 工业·编程
⁄ 共 3344字
1.这个模式可以称为“给爱用继承的人一个全新的设计眼界”的模式。牵扯到第五个设计原则:“类应该对扩展开放,而对修改封闭”。但是要注意,遵循这一标准会带来更多层次上的抽象,增加代码的复杂度,所以并不是所有类都要这样设计。
2.文中举了一个为辛巴克咖啡馆写一个计算咖啡价格+调料价格的类,使用了装饰模式——动态的将责任附加到对象上,若要扩展功能,装饰者提供了比继承更加有弹性的替代方案。我们就拿这个计算咖啡价格的...
设计模式, 软件开发阅读全文
2012-07-19 07:51
⁄ 工业·编程
⁄ 共 8843字
1.我们在前边提到一个原则就是“面向接口而不要面向实现编程”,但是我们一直在使用Duck duck = new MallardDuck()这样的模式,后边的new语句却违反了这个原则。工厂方法就可以解决这个问题,它用来封装对象的创建。
2.这一节我们考虑如下场景:一个披萨店要制作各种各样的披萨,甚至还要开分店。其中涉及到订购披萨的步骤。我们可以把orderPizza中的关于制作pizza的部分单独提取到一个类中。
public class PizzaStore { Sim...
设计模式, 软件开发阅读全文
2012-07-19 07:49
⁄ 工业·编程
⁄ 共 5246字
1.我们需要理解报社、订阅系统和订报人之间的关系,订报人通过订阅系统订报,一旦报社有新的报纸,订阅系统就会派人送或者邮寄给订报人新的报纸。然后,出版者+订阅者就是观察者模式,只不过名称不一样,主题(Subject,或者叫做Observabler)类比于出版者,是事件发生的主体,订阅者改称为观察者(Observer),是响应事情发生的主体。该模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收...
设计模式, 软件开发阅读全文
2012-07-19 07:48
⁄ 工业·编程
⁄ 共 3479字
1.书中举了一个鸭子类的设计,有些会飞或者会叫,有些不会飞可能也不会叫,用继承则导致不该有的功能通过继承而继承了下来,使用接口则代码无法做到最大程度的重用。进而引出设计原则1:找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起,把会变化的部分取出并封装起来,好让其他部分不会受到影响 。——每个设计模式背后的精神所在。
2.我们希望运行时动态的改变一些行为,这就引出了第二个原则...
设计模式, 软件开发阅读全文
2012-07-18 07:43
⁄ 工业·编程
⁄ 共 5374字
定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存的状态
类型:行为类
类图:
我们在编程的时候,经常需要保存对象的中间状态,当需要的时候,可以恢复到这个状态。比如,我们使用Eclipse进行编程时,假如编写失误(例如不小心误删除了几行代码),我们希望返回删除前的状态,便可以使用Ctrl+Z来进行返回。这时我们便可以使用备忘录模式来实现。
备忘录...
设计模式, 软件开发阅读全文
2012-07-18 07:41
⁄ 工业·编程
⁄ 共 2078字
定义:给定一种语言,定义他的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中句子。
类型:行为类模式
类图:
解释器模式是一个比较少用的模式,本人之前也没有用过这个模式。下面我们就来一起看一下解释器模式。
解释器模式的结构
抽象解释器:声明一个所有具体表达式都要实现的抽象接口(或者抽象类),接口中主要是一个interpret()方法,称为解释操作。具体解释任务由它的各个实现类来完成,具体的解...
设计模式, 软件开发阅读全文
2012-07-18 07:39
⁄ 工业·编程
⁄ 共 2752字
定义:提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。
类型:行为类模式
类图:
如果要问java中使用最多的一种模式,答案不是单例模式,也不是工厂模式,更不是策略模式,而是迭代器模式,先来看一段代码吧:
public static void print(Collection coll){ Iterator it = coll.iterator(); while(it.hasNext()){ &...
设计模式, 软件开发阅读全文
2012-07-18 07:38
⁄ 工业·编程
⁄ 共 2105字
定义:定义一组算法,将每个算法都封装起来,并且使他们之间可以互换。
类型:行为类模式
类图:
策略模式是对算法的封装,把一系列的算法分别封装到对应的类中,并且这些类实现相同的接口,相互之间可以替换。在前面说过的行为类模式中,有一种模式也是关注对算法的封装——模版方法模式,对照类图可以看到,策略模式与模版方法模式的区别仅仅是多了一个单独的封装类Context,它与模版方法模式的区别在于:在模版方法模式中,调...
设计模式, 软件开发阅读全文
2012-07-18 07:37
⁄ 工业·编程
⁄ 共 3721字
定义:使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。
类型:行为类模式
类图:
首先来看一段代码:
public void test(int i, Request request){ if(i==1){ Handler1.response(request); }else if(i == 2){ ...
设计模式, 软件开发阅读全文
2012-07-18 07:36
⁄ 工业·编程
⁄ 共 2528字
定义:将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。
类型:行为类模式
类图:
命令模式的结构
顾名思义,命令模式就是对命令的封装,首先来看一下命令模式类图中的基本结构:
Command类:是一个抽象类,类中对需要执行的命令进行声明,一般来说要对外公布一个execute方法用来执行命令。
ConcreteCommand类:Command类的实现类,对抽象类中...
设计模式, 软件开发阅读全文