1.概述在软件开发过程中,对于系统中的某些对象,它们存储在同一个集合collection中,且具有不同的类型,而且对于该集合中的对象,可以接受一类称为访问者的对象来访问,而且不同的访问者其访问方式有所不同。例子1:顾客在超市中将选择的商品,如苹果、图书等放在购物车中,然后到收银员处付款。在购物过程中...
分类:
其他好文 时间:
2014-08-03 12:40:15
阅读次数:
331
先来说一下委托模式是什么,下面的内容摘要自维基百科:
委托模式是软件设计模式中的一项基本技巧。在委托模式中,有两个对象参与处理同一个请求,接受请求的对象将请求委托给另一个对象来处理。委托模式是一项基本技巧,许多其他的模式,如状态模式、策略模式、访问者模式本质上是在更特殊的场合采用了委托模式。委托模式使得我们可以用聚合来替代继承。
简单的Java例子
在此例中,类模拟打印机Printer拥有针...
分类:
其他好文 时间:
2014-07-29 18:04:42
阅读次数:
225
目的
在不改变某类层次结构中的各个类的前提下,定义作用于类中各元素的新操作。
案例
现在有不同的设备Equipment,例如:Chassis,FloppyDisk等等。有的人想了解它的性能,但有的人想了解它的价格,可能还有人想了解其他方面的信息,如制造商,制造材料等。但是当一个Equipment的的类定义好了,子类也定义好了之后,要增加新的操作,就需要改变所有的类,这...
分类:
其他好文 时间:
2014-07-27 11:42:04
阅读次数:
229
原地址:http://blog.csdn.net/lovelion/article/details/7433523想必大家都去过医院,虽然没有人喜欢去医院(爱岗敬业的医务工作人员除外,)。在医生开具处方单(药单)后,很多医院都存在如下处理流程:划价人员拿到处方单之后根据药品名称和数量计算总价,药房工...
分类:
其他好文 时间:
2014-07-26 14:17:47
阅读次数:
272
??
昨天探讨了访问者模式,今天来说说桥接模式:
定义:将抽象部分与它的实现部分分离,是它们可以独立地变化。
这并不是说,让抽象类与其派生类分离,因为这没有任何意义。实现指的是抽象类和它的派生类用来实现自己的对象。
理解:实现系统可能有多角度分类,每一种分类都有可能变化,那么就把这种多角度分离出来让它们独立变化,减少它们之间的耦合。
下面讲一下合成/聚合复用原则:
合成/聚合复用原则就...
分类:
其他好文 时间:
2014-07-25 11:10:31
阅读次数:
229
??
之前我对所有的23种设计模式作了一个小总结,现在我们来对每一种设计模式作详细的分析。首先是访问者模式:
定义:表示一个作用于某对象结构中的各元素的操作。它可使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。
适用地方:访问者模式的目的是要把处理从数据结构分离出来。很多系统可以按照算法和数据结构分开,如果这样的系统有比较稳定的数据结构,又有易于变化的算法的话,使用访问者模式就...
分类:
其他好文 时间:
2014-07-24 10:39:38
阅读次数:
160
本文介绍11种行为型设计模式里的策略模式、模板方法、访问者模式。一、策略模式定义一系列的算法,把它们每个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。1.Strategy定义所有支持的算法的公共接口。Context使用这个接口来调用某ConcreteStrategy定义的算法。public abstract class Strategy { public abst...
分类:
编程语言 时间:
2014-07-23 13:37:16
阅读次数:
247
访问者模式(Visitor),表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。访问者模式结构图 访问者模式使用与数据结构相对比较稳定的系统,即数据结构和作用与结构上的操作之间的耦合解脱开,使得操作集合可以相对自由的演化。其目的,要把处理从数....
分类:
其他好文 时间:
2014-07-16 15:30:11
阅读次数:
238
(二十一)访问者模式
对已存在的类进行扩展,通常需要增加方法,但是如果需要的行为与现有的对象模型不一致,或者无法修改现有代码。在这种情况下,不更改类的层次结构,就无法扩展该层次结构的行为。如果运用了访问者模式,就可以支持开发人员扩展该类层次结构的行为。
(二十二)中介者模式
面对对象开发要求尽可能恰当的分配职责,要求对象能够独立的完成自己的任务。观察者模式通过最小化对象与对象之间的职责交互,从而支持职责的合理分配。当对象间的交互趋向复杂,而每个对象都需要知道其他对象的情况时,提供一个集中地控制权是很有用...
分类:
编程语言 时间:
2014-07-16 11:27:22
阅读次数:
263