- 浏览: 65832 次
- 性别:
- 来自: 上海
最新评论
-
java苹果+番茄:
已经修改,感谢大家提的意见;有一年多没进来了,很惭愧;以后一定 ...
java设计模式笔记链接地址汇总 -
youthon:
命令(Command)模式【行为模式第九篇】的链接应为http ...
java设计模式笔记链接地址汇总 -
youthon:
你给的链接只有你自己才能打开,你改改吧
java设计模式笔记链接地址汇总 -
shaozhi_jinni:
[b][/b][i][/i][u][/u]引用引用
[img ...
模板方法(Template Method)模式【行为模式第十篇】 -
Tank03:
慢慢的走~
android开发学习中(已经学会了几个小玩意),兴趣大增
文章列表
责任链(Chain of Responsibility)模式
责任链模式是一种对象行为模式。
在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。
发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织链和分配责任。
责任链模式的角色:
1、抽象处理者角色:定义出一个处理请求的接口。如果需要,接口可以定义出一个方法,以设定和返回对下家的引用。这个角色通常由
一个java抽象类或者java接口实现。
2、具体处理者角色:具体 ...
模板方法(Template Method)模式
模板方法模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造子的形式实现,然后声明一些抽象方法来迫使子类
实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意
一、涉及到的角色
抽象模板角色有如下责任:
1、定义了一个或多个抽象操作,以便让子类实现。这些抽象操作叫做基本操作,它们是一个顶极逻辑的组成步骤。
2、定义并实现了一个模板方法。这个模板方法一般是一个具体方法,它给出了一个顶极逻辑的骨架,而逻辑的组成
步骤在相应的抽象操作 ...
命令(Command)模式:
命令模式属于对象的行为模式。命令模式又称为行动模式或交易模式。
命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志 ...
解释器(Interpreter)模式:
解释器模式是类的行为模式。给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器。客户端可以使用这个解释器
来解释这个语言中的句子。
一、解释器模式所涉及 ...
观察者(Observer)模式
观察者模式是对象的行为模式,又叫做发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、
源-监听器(Source/Listener)模式或从属者(Dependents)模式。
观察者模式定义了一种一对多 ...
访问者(Visitor)模式:
访问者模式是对象的行为模式。访问者模式的目的是封装一些施加于某种数据结构元素之上的操作。一旦这些操作要修改的话,接受这个操作的数据
结构则 可以保持不变。
聚集是的大多数的系统都要处理一种容器对象,它保存了对其他对象的引用。相信大多数读者都有处理聚集的经验,但是人家处理过的大多数聚集
恐怕 都是同类操作,而迭代子模式就是为这种情况准备的设计模式。
如果需要针对一个包含不同类型元素的聚集采取某种操作,而操作的细节根据元素的类型不同而有所不同时,就会出现必须对元素类型做类型判断
的条件转移语句。
一、访问者模式涉及到抽象访问者角色、具体访 ...
迭代子(Iterator)模式:
迭代子模式又叫游标(Cursor)模式,是对象的行为模式。迭代子模式可以顺序地访问一个聚集中的元素而不必暴露聚集的内部表象。
多个对象聚在一起形成的总体称之为聚集(Aggregate),聚集对象是能够包容一组对象的容器对象。聚集依赖于趋集结构的抽象化,具体复杂性
和多样性。数组就是最基本的聚集,也就是其他的java聚集对象的设计基础。
java聚集(Collection)对象是实现了共同的java.util.Collection接口的对象,是java语言对聚集概念的直接支持。
聚集对象必须提供适当的方法,允许客户端能够按照一个线性顺序遍历所 ...
调停者(Mediator)模式
调停者模式是对象的行为模式。调停者模式包装了一系列对象相互作用的方式,使得这些对象不必互相明显引用。从而使它们可以较松散地耦合。
当这些对象中的某些对象之间的相互作用发生改变时,不会立即影响其他的一些对象之间的相互作用。从而保证这些相互作用可以彼此独立地变化
要想恰到好处地在一个系统里面使用设计模式,必须做到以下几点:
(1)完全了解面临的问题,这就是说要完全了解具体情况。如果不完全了解所面临的问题,怎么能谈得上解决问题呢?
(2)完全了解模式,这就是说要十分懂得理论。如果不完全懂得所使用的理论,怎么能够正确地应用这一理论呢?
(3)非常了解 ...
策略(Strategy)模式
策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换,
策略模式可以在不影响到客户端的情况下发生变化。
一、策略模式涉及到的角色;
1、环境(Context)角色:持有一个Strategy类的引用。
2、抽象策略(Strategy)角色:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需要的接口。
3、具体策略(ConcreteStrategy)角色:包装了相关的算法或行为。
//环境角色
public class Context{
...
不变(Immutable)模式
一个对象的状态在对象被创建之后就不再变化,这就是不变模式。
一、不变模式有两种模式
1、弱不变模式
一个类的实例的状态是不可变化的,但是这个类的子类的实例具有可能会变化的状态。这样的类符合弱不变模式的定义。
要实现弱不变模式,一个类必须满足下面条件:
第一、所考虑的对象没有任何方法会修改对象的状态,这样一来,当对象的构造子将对象的状态初始化之后,
对象的状态便不再改变。
第二、所有的属性都应当是私有的。不要声明任何的公共的属性,以防客户端对象直接修改任何的内部状态。
第三、这个对象所引用到的其它对 ...
备忘录(Memento Pattern)模式
备忘录模式又叫做快照模式(Snapshot Pattern)或Token模式,是对象的行为模式。
备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。备忘录模式的用意是在不破坏封装的条件下,将一个对象的状态捕捉住,并外部化
存储起来,从而可以在将来合适的时候把这个对象还原到存储起来的状态。备忘录模式常常与命令模式和迭代子模式一同使用。
常见的软件系统往往不止存储一个状态,而是需要存储多个状态。这些状态常常是一个对象历史发展的不同阶段的快照,存储这些快照的备忘录对象
叫做此对象的历史,某一个快照所处的位置叫做检查点。
备忘 ...
XMLProperties与适配器模式举例:
//-----
import java.io.FileReader;
import org.xml.sax.XMLReader;
import org.xml.sax.InputSource;
import org.xml.sax.helpers.XMLReaderFactory;
import org.xml.sax.helpers.DefaultHandler;
public class MySAXApp extends DefaultHandler {
public MySAXApp() {
supe ...
适配器模式(Adapter Pattern)(另称-变压器模式):
把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作
1、(类适配器)模式所涉及的角色有:
1/目标(Target)角色:这就是所期待得到的接口。由于是类适配器模式,因此目标不可以是类。
2/源(Adaptee)角色:现有需要适配的接口。
3/适配器(Adapter)角色:适配器类是本模式的核心。适配器把源接口转换成目标接口。显然,这一角色不可以是接口,
而必须是具体类。
//目标角色类
public interface Target{ ...
桥梁(Bridge)模式:
一、桥梁模式的用意
桥梁模式的用意是:将抽象化与实现化脱耦,使得二者可以独立地变化。
1、抽象化
存在于多个实体中的共同的概念性联系,就是抽象化。作为一个过程,抽象化就是忽略一些信息,从而把不同的实体当做同样
的实体对待。
2、实现化
抽象化给出的具体实现就是实现化。
一个类的实例就是这个类的实现化,一个具体子类是它的抽象超类的实现化。而在更加复杂的情况下,实现化也可以是与抽象化
等级结构相平行的等级结构,同样可以由抽象类和具体类组成。
3、脱耦
所谓耦合,就是两个实体的行为的某种强关联。而将它们的强关联去掉 ...
门面(Facade)模式:
是对象的结构模式。外部与一个子系统的通信必须通过一个统一的门面对象进行。549P
一、门面模式的角色:
1、门面角色:客户端可以调用这个角色的方法。此角色知晓相关的(一个或多个)子系统的功能和责任。
在正常情况下,本角色会将所有从客户端发来的请求委派到相应的子系统去。
2、子系统角色:可以同时有一个或者多个子系统。每一个子系统都不是一个单独的类,而是一个类的集合。
每一个子系统都可以被客户端直接调用,或者被门面角色调用。子系统并不知道门面的存在,对于子系统而言,
门面仅仅是另外一个客户端而已。
二 ...