设计模式:模板方法(template method) in java
定义:定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义这个算法的某些特定步骤。
简单的说,就是你首先定义一下算法的各部分之间的执行顺序或者调用关系,然后在子类中实现具体每一部分是如何实现的。
采用什么算法作为例子呢?就是用把动物放进冰箱这个算法吧。
定义:定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义这个算法的某些特定步骤。
简单的说,就是你首先定义一下算法的各部分之间的执行顺序或者调用关系,然后在子类中实现具体每一部分是如何实现的。
采用什么算法作为例子呢?就是用把动物放进冰箱这个算法吧。
定义:建造者模式,又叫生成器模式,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.
适用性:
a.当创建复杂对象的算法应该独立于该对象的组成部分以及他们的装配方式.
b.当构建过程必须允许构造的对象有不同的表示.
构建者模式的核心思想:
将一个“复杂对象的构建算法”与它的“部件及组装方式”分离,使得构件算法和组装方式可以独立应对变化;复用同样的构建算法可以创建不同的表示,不同的构建过程可以复用相同的部件组装方式。
建造者者模式有4个角色:
定义:中介者模式,用一个中介对象封装一系列的对象交互,中介者使各对象不需要显式的相互作用,从而使其耦合松散,而且可以独立地改变它们之间的交互.
相关角色
定义:封装一些作用于某种数据结构中的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。
访问者模式有以下几个角色:
定义:当一个对象内在状态改变时允许其改变行为,这个对象看起来想改变了其类。
状态模式的核心是封装,状态的变更引起了行为的变更,从外部看起来就好像这个对象对应的类发生了改变一样。
状态模式有3个角色:
定义:策略模式(Strategy Pattern)是一种比较简单的模式,也叫做政策模式(Policy Pattern)。定义一组算法,将每个算法都封装起来,并且使他们之间可以互换。
策略模式有3个角色:
下面借用刘备江东娶亲,诸葛亮给赵云3个妙计的故事来说明这个问题。
定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。
备忘录模式有以下三个角色:
相信大家一定在开发中见过并且写过类似这样的代码:
1 | public Book getBook(int id) { |
系统在使用对象的相关功能时,总要检查对象是否为null,如果不为null,我们才会调用它的相关方法,完成某种逻辑。这样的检查在一个系统中出现很多次,相信任何一个设计者都不愿意看到这样的情况。为了解决这种问题,我们可以可以引入空对象,这样,我们就可以摆脱大量程式化的代码,对代码的可读性也是一个飞跃。
定义:使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。
责任链由2个角色组成:
Handler抽象处理者角色
它定义了一个处理请求的接口。当然对于链子的不同实现,也可以在这个角色中实现后继链。
Concrete Handler具体处理者角色
实现抽象角色中定义的接口,并处理它所负责的请求。如果不能处理则访问它的后继者。
比如Filter就类似这种,每个Filter都对请求进行处理,如果解决不了,则交给下一个进行处理。