指导模式设计的三个概念 重用(reuse):是目标 两种重要的重用手段 Inheritance composition 接口与实现分离 接口保持不变,分离带来灵活性 多态性(polymorphism)) ◆Decouple 降低复杂性 Object Oriented Analysis and Design 6
Object Oriented Analysis and Design 6 指导模式设计的三个概念 w 重用(reuse):是目标 § 两种重要的重用手段 • Inheritance & composition w 接口与实现分离 § 接口保持不变,分离带来灵活性 § 多态性(polymorphism) w Decouple § 降低复杂性
设计模式分类 目的 创建型 结构型 行为型 类 Factory Method Adapter Interpreter Template Method Abstract Factory Adapter Chain of Responsibility Builder Bridge Command 范围 Prototype Composite Iterator Singleton Decorator Mediator 对象 Facade Memento Flyweight Observer Proxy State Strategy Visitor Object Oriented Analysis and Design 7
Object Oriented Analysis and Design 7 设计模式分类
创建型模式 ·ABSTRACT FACTORY(抽象工厂,kit) ·BUILDER(生成器 ·FACTORY METHOD(工厂方法,virtual constructor) ·PROTOTYPE(原型) SINGLETON(单件) Object Oriented Analysis and Design 8
Object Oriented Analysis and Design 8 创建型模式 • ABSTRACT FACTORY(抽象工厂,kit) • BUILDER(生成器) • FACTORY METHOD(工厂方法,virtual constructor) • PROTOTYPE(原型) • SINGLETON(单件)
抽象工厂(一) 意图 提供一个创建一系列相关或相互依赖对象的 接口,而无需指定它们具体的类。 ◆ 别名 Kit Object Oriented Analysis and Design 9
Object Oriented Analysis and Design 9 抽象工厂(一) w 意图 提供一个创建一系列相关或相互依赖对象的 接口,而无需指定它们具体的类。 w 别名 Kit
抽象工厂(二) 动机 窗口和按钮等用户界面“窗口组件”定义不同的外观 和行为。为保证视感风格标准间的可移植性,一个应用不应该为 一个特定的视感外观硬编码它的窗口组件。在整个应用中实例化 特定视感风格的窗口组件类将使得以后很难改变视感风格。 为解决这二问题我们可以定义一个抽象的WidgetFactory类,这 个类声明了一个用来创建每一类基本窗口组件的接口。每一类窗 口组件都有一个抽象类,而具体子类厕实现了窗口组件的特定视 感风格。对于每二个抽象窗口组件类,、NidgetFactory接口都有 个返回新窗口组件对象的操作。客户调用这些操作以获得窗口 组件实例,但客户并不知道他们正在使用的是哪些具体类。这样 客户就不依赖宇一般的视感风格,如下页图所示。 Object Oriented Analysis and Design 10
Object Oriented Analysis and Design 10 抽象工厂(二) w 动机 考虑一个支持多种视感( look - and - feel)标准的用户界面工 具包,例如Motif和Presentation Manager。不同的视感风格为 诸如滚动条、窗口和按钮等用户界面“窗口组件”定义不同的外观 和行为。为保证视感风格标准间的可移植性,一个应用不应该为 一个特定的视感外观硬编码它的窗口组件。在整个应用中实例化 特定视感风格的窗口组件类将使得以后很难改变视感风格。 为解决这一问题我们可以定义一个抽象的WidgetFactory类,这 个类声明了一个用来创建每一类基本窗口组件的接口。每一类窗 口组件都有一个抽象类,而具体子类则实现了窗口组件的特定视 感风格。对于每一个抽象窗口组件类, WidgetFactory接口都有 一个返回新窗口组件对象的操作。客户调用这些操作以获得窗口 组件实例,但客户并不知道他们正在使用的是哪些具体类。这样 客户就不依赖于一般的视感风格,如下页图所示