设计模式 联系客服

发布时间 : 星期二 文章设计模式更新完毕开始阅读81a5f062561252d380eb6e51

? ? 在扫过聚集元素的同时进行计算。以确定呈现给客户端的元素都是满足某一个过滤条件的。或者这些元素已经经过了重新的排列。 迭代子优点 ? 聚集类的设计简单,不必对外提供遍历api。 ? 一个聚集对象可以同时有几个迭代在进行中。 ? 客户端不必知道聚集的具体类型。就可以读取和遍历聚集对象。即使聚集对象的类型发生变化也不会影响客户端的遍历。 ? 迭代子缺点 ? 迭代子模式给客户端一个聚集被顺序化的错觉 ? 迭代子给出的聚集元素没有类型特征。(应用泛型可解决此问题) 聚集角色一般提供一个工厂方法,向外界提供自己的迭代子对象。 listIterator是Iterator的子接口。 迭代子模式和工厂模式的关系。 ? ? ? Iterator与listIterator ? ? Collection定义了iterator方法。AbstractList又添加了一个ListIterator方法。 Iterator与Enumeration Iterator 删除元素 不能 不能 支持fail-fast ListIterator 删除元素 增加元素 反向迭代 支持fail-fast ? Enumeration 不能 不能 不能 不支持fail-fast 1.21 ok责任连模式 ? 什么是责任链模式: ? ? ? ? ? 系统中将会存在多个有类似处理能力的对象。当一个请求触发后,请求将在这些对象组成的链条中传递,直到找到最合适的“责任”对象,并进行处理。 责任链可能是一条直线,一个环链,或者一个数状结构的一部分。 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 说白了就是 “推卸”责任的模式,你的问题在我这里能解决我就解决,不行就把你推给另一个对象。至于到底谁解决了这个问题了呢?我管呢! 纯与不纯 ? 纯的责任链模式,规定一个具体处理者角色只能对请求作出两种动作:自己处理;传给下家。不能出现处理了一部分,把剩下的传给了下家的情况。而且请求在责任链中必须被处理,而不能出现无果而终的结局。 责任链模式的纯与不纯的区别,就像黑猫、白猫的区别一样。不要刻意的去使自己的代码来符合一个模式的公式。只要能够使代码降低耦合、提高重用,满足系统需求并能很好的适应变化就好了。正所谓:管它黑猫白猫,抓住老鼠就是好猫! ? ? 反之,则就是不纯的责任链模式。 不纯的责任链模式还算是责任链模式吗?比如一个请求被捕获后,每个具体处理者都尝试去处理它,不管结果如何都将请求再次转发。我认为这种方式的实现,算不? 算是责任链模式的一种倒不重要,重要的是我们也能从中体味到责任链模式的思? ?

想:通过将多个处理者之间建立联系,来达到请求与具体的某个处理者的解耦。 责任链模式并不创建出责任链,责任链的创建必须由系统的其他部分创建出来。 责任链模式要求在同一个时间里,命令只可以传给一个下家,而不可以传给多个下家。

?

? 角色 ? ?

抽象处理者,(通常由java抽象类或者接口来实现) 具体处理者。

AWT1.0使用了责任链模式和命令模式来处理GUI事件。

1.1版本以后,事件处理模型是建立在观察者模式的基础上,而不是建立在责任链模式基础上

论坛关键词过滤

? 例子 ? ? ?

?

适用范围:

? 有多个的对象可以处理一个请求,哪个对象处理该请求运行时刻自动确定。 ? 你想在不明确指定接收者的情况下,向多个对象中的一个提交一个请求。 ? 可处理一个请求的对象集合应被动态指定。 优点 ? ?

写成一个类不行吗?

责任链模式减低了请求的发送端和接收端之间的耦合,使多个对象都有机会处理这

?

? ?

个请求。

? 提高了灵活性,添加新的请求处理,不需要修改原来的代码 缺点

? 是责任链模式可能会带来一些额外的性能损耗,因为它要从链子开头开始遍历。

1.22 命令模式

简单,自己看就可以了.什么时候用呢?就支持一件事.undo?

把一个请求,或者一个操作封装到一个对象里面,命令模式允许系统使用不同的请求,把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和回复功能 命令模式是对命令的封装

命令模式把发出命令的责任和执行命令的责任分割开,委派给不同的对象.

1.23 备忘录模式

用的并不多

1.24 状态模式

用的不是很多

1.25 访问者模式

用的不是很多

1.26 解释器模式

如果开发一种面向对象的编程语言的编译器.可以用到

1.27 ok调停者模式

? 通常,面向对象应用程序是由一组为了提供某种服务而彼此交互的对象组成。

当彼此引用的对象数量比较少时,此时对象之间就为直接交互(点对点)。

?

? 当对象的数量增加时,这种直接交互会导致对象之间复杂的、混乱的引用。这

就会影响应用程序的可维护性。同时,因为对象之间的高耦合,当一个对象直接引用其他的对象时,缩小了这些对象的复用范围。

? ? 调停者模式(Mediator Pattern)推荐抽象所有对象交互的细节到一个独立的类,

这个类就是调停者,它负责这组对象之间的交互。这组对象中的 每一个对象

仍然负责提供它所具有的服务,但为了提供服务,对象之间不能直接彼此交互。两个不同对象之间的交互通过调停者(Mediator)进行路由。所 有的对象把消息发送给调停者(Mediator)。调停者(Mediator)依据应用程序的需求把消息再发送给相应的对象。

?

? 这样的设计有以下主要的优 点:

?

随着所有对象的交互行为移到一个独立的对象中,通过调停者(Mediator)的子类替换调停者(Mediator)或者改变它的功能可以很容易的改变对象之间内部的关联行为。

? ? ?

将对象的内部依赖关系移到一个单独的对象,这样会提高对象的可用性。 因为对象不需要直接引用其他的对象,所以对象可以更容易的进行单元测试。

类之间的低耦合可以使类在不影响其他类的基础上进行修改。

? 调停者模式举例

? eg1. WTO组织:它是一个协调组织,它将各贸易区自行进行的相互协调

的强耦合变成了松散合;

?

eg2. 4个MM打麻将,相互之间谁应该给谁多少钱算不清楚了,某人担任调停者,各MM按照各自的筹码数算钱,赚了钱的从调停者这里拿,赔了钱的也付给调停者;

eg3. 租赁中介:很多人有出租房子的需求,也有不少人需要租房,租赁中介在其中担任了调停者的角色, 疏通了两者之间的复杂关系,也方便了两者。

?

1.28 开闭原则

要求一个系统的设计能够允许系统在无需修改的情况下扩展其功能

1.29 依赖倒转原则

减少对象之间的耦合有利于系统的复用