摘要: 中介模式(Mediator),用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使用其耦合松散,而且可以独立地改变它们之间的交互。下面先给出类结构图,再做简单解释。中介者模式很容易在系统中引用,但是也比较容易误用。所以当系统出现了“多对多”交互复杂的对象群时,不要急于使用中介者模式,而要先反思系统在设计上是不是合理。下面我们来说一说,中介者模式的优缺点。中介者的优点首先是Mediator的出现减少了各个Colleague的耦合,使得可以独立地改变和复用各个 Colleague类和Mediator。其次,由于把对象如何协作进行了抽象,将中介作为一个独立的概念并将其封装 阅读全文
posted @ 2012-08-17 11:24 Leon Chen2012 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 合成/聚合复用原则(CAPP),尽量使用合成/聚合,尽量不要使用类继承。合成(Composition,也有翻译成组合)和聚合(Aggregation)都是关联的特殊种类。聚合表示一种弱的‘拥有’关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分;合成则是一种强的‘拥有’关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样。打个比方说,小鸟有两个翅膀,翅膀与小鸟是部分和整体的关系,并且它们的生命周期是相同的,于是翅膀和小鸟就是合成关系。然而相对于鸟群来说,一个鸟群有多只小鸟,所以小鸟和鸟群是聚合关系。合成/聚合复用原则的好处是,优先使用对象的合成/聚合将有助于你保持每个类被封 阅读全文
posted @ 2012-08-17 10:53 Leon Chen2012 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 首先介绍一下解释器模式适合解决哪类问题。其实,解释器模式需要解决的问题是,如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言的句子。这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题。就应用的例子来说,例如正则表达式就是它的一种具体应用,解释器可以为正则表示定义一个文法,如何表示一个特定的正则表达式,以及如何解释这个正则表达式。下面给出解释器模式的定义。解释器模式 (interpreter),给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。解释器模式的类结构图如下。图中的结构也比较好理解,解释器 阅读全文
posted @ 2012-08-17 10:28 Leon Chen2012 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 职责链模式(Chain of Responsibility):使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。职责链模式的一个很重要的特点是,当客户发出请求之后,客户端并不知道哪一个对象最终处理这个请求,这样系统的更改可以在不影响客户端的情况下动态地重新组织和分配责任。下面给出类结构图。从上图可以看出,当客户提交一个请求时,请求是沿链传递直至有一个ConcreteHandler对象负责处理它。这样做的好处是请求者不用管哪个对象来处理,反正最终是要被某一个对象处理就是了。也就是说接收者和发送者都没有对 阅读全文
posted @ 2012-08-17 09:53 Leon Chen2012 阅读(209) 评论(0) 推荐(0) 编辑