摘要: 概述: 将对象组合成树形结构以表示"部分-整体"的层次结构。"Composite"使得用户对单个对象和组合对象的使用具有一致性。适用场合: 1.你想用部分-整体结构层次。2.你希望用户忽略组合对象与单个对象的不同,用户将统一的使用组合结构中的所有对象。类图: 代码示例: ... 阅读全文
posted @ 2011-08-30 10:58 叶鹏 阅读(737) 评论(0) 推荐(0) 编辑
摘要: 概述: 备忘录模式(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将该对象恢复到原先保存的状态。应用场合: 1.必须保存一个对象在某一时刻(部分)的状态,这样以后需要时它才能恢复到先前的状态。2.如果用一个接口来让其他对象直接得到这个状态,将会暴露对象的实现细节并破坏对象的封装性。类图: ... 阅读全文
posted @ 2011-08-29 11:40 叶鹏 阅读(919) 评论(0) 推荐(1) 编辑
摘要: 概述: 适配器模式(atapter)将一个类的接口转换成用户希望的另一个接口,使原本由于接口不兼容而不能一起工作的那些类可以一起工作。应用场合: 1.你想使用一个已经存在的类,而它的接口不符合你的要求。2.你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。3.(仅适用于对象adapter),你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹... 阅读全文
posted @ 2011-08-27 15:26 叶鹏 阅读(755) 评论(0) 推荐(0) 编辑
摘要: 概述: 状态模式(state):当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。适用场合: 1.当一个对象的转换条件表达式过于复杂时,通常这个状态由一个或者多个枚举表示,通常有多个操作包含这一相同的的条件结构,state模式将一个条件分支放到一个类中,这使得你可以根据对象自身的情况将对象的状态作为对象,这一对象不依赖于其他对象而独立变化,把状态的判断逻辑放到表示不同状态的一系列类... 阅读全文
posted @ 2011-08-26 11:28 叶鹏 阅读(773) 评论(0) 推荐(0) 编辑
摘要: 概述: 抽象工厂(abstractFactory):提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们的具体类适用场合:1.一个系统要独立于它的产品的创建、组合和表示时。2.一个系统要由多个产品系列中的一个来配置时。3.当你强调一系列相关的产品对象的设计以便进行联合使用时。4.当你提供一个产品类库,而只想显示他们的接口而不是实现时。类图: 示例代码: ... 阅读全文
posted @ 2011-08-25 11:08 叶鹏 阅读(1258) 评论(3) 推荐(1) 编辑
摘要: 概述: 观察者模式(Oberserver):定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。实用性: 1.当一个对象有两个方面,其中一个方面依赖于另一个方面。将二者封装在独立的对象中以使他们可以各自独立的改变和复用。2.当一个对象的改变需要同时改变其他对象,而不知道具体有多少对象有待改变。3.当一个对象必须通知其他对象,而又不能假定其他对象是谁... 阅读全文
posted @ 2011-08-24 14:16 叶鹏 阅读(767) 评论(0) 推荐(0) 编辑
摘要: 概述: 建造者模式(Builder):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。使用场合: 1.当创建复杂对象的算法应该独立于该对象的组成部分及他们的装配方式时。2.当构造过程必须允许被构造的对象有不同的表示时。类图: 代码结构实例: ... 阅读全文
posted @ 2011-08-23 13:06 叶鹏 阅读(841) 评论(0) 推荐(0) 编辑
摘要: 概述: 为子系统的一组接口提供一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用应用场合: 1.当你要为一个复杂子系统提供一个简单接口时。子系统往往因为不断演化而变得越来越复杂。大多数模式使用都会产生更多更小的类。这使得子系统更具可重用性,也更容易对子系统进行定制,但这也给那些不需要定制子类的的用户带来一些使用上的困难。Facade可以提供一个简单的缺省视图,这一视图对大... 阅读全文
posted @ 2011-08-22 10:36 叶鹏 阅读(724) 评论(0) 推荐(0) 编辑
摘要: 概述: 模板方法(TemplateMethod):定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod使得子类可以不改变一个算法的结构即可以重定义该算法的某些特定步骤。实用性: 1.一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。2.各子类中公共的行为应被提取出来并集中到一个公共类中以避免代码重复。 首先识别现有代码的不同之处,并且将不同之处分离为新的操作... 阅读全文
posted @ 2011-08-20 09:46 叶鹏 阅读(587) 评论(0) 推荐(0) 编辑
摘要: 概述: 原型模式(Prototype):用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象实用场合: 1.当一个系统应该独立于它的产品创建、构成和表示时。2、当要实例化的类是在运行时刻指定时,例如通过动态装载。3、为了避免创建一个与产品类层次平行的工厂类层次时。4、当一个类的实例只能有几个不同状态组合中的一种时。类图: ... 阅读全文
posted @ 2011-08-19 10:52 叶鹏 阅读(834) 评论(0) 推荐(0) 编辑