首页计算机计算机软件设计模式 06 第四部分 创建型设计模式.pptx

06 第四部分 创建型设计模式.pptx

页数:21页文件大小:126.5 KB来源: 设计模式ppt课件

本课件进入创建型设计模式,从简单工厂的适用与不足讲起,比较工厂方法、抽象工厂、构造器、原型与单件模式在封装对象创建、隔离产品族变化上的不同做法与取舍。

创建型设计模式章节封面,标示本篇讲解简单工厂、工厂方法、抽象工厂、单件、构造器与原型六种模式
创建型设计模式的内容导览,列出简单工厂、工厂方法、抽象工厂、单件、构造器与原型六种模式的名称与英文名
本页为图片内容,位于「创建型设计模式的内容导览」与「简单工厂模式的适用性与不足」之间。
查看本课件的文字版(共 21 页,供检索与复制)

第1页:第四部分创建型设计模式封面

第四部分创建型设计模式

第2页:创建型设计模式的内容导览

简单工厂模式(Simple Factory Pattern)

  • 工厂模式(Factory Method Pattern)
  • 抽象工厂模式(Abstract Factory Pattern)
  • 单件模式(Singleton Pattern)
  • 构造器模式(Builder Pattern)
  • 原型模式(Prototype Pattern)

第3页:

第4页:简单工厂模式的适用性与不足

不足

  • 使用者与产品紧耦合;
  • 产品的创建与使用,采用硬编码;
  • 难以适应产品的变化,对开闭原则的支持不好
  • 扩展产品子类
  • 扩展产品族
  • 产品的组装方式变化
  • 产品的构建算法

第5页:简单工厂模式的定义与结构

4.1简单工厂模式

第6页:

第7页:简单工厂模式示例一:未封装对象的创建

例1

第8页:

第9页:简单工厂模式示例二:工厂构造对象

例2:Java中DateFormat

  • DateFormat类中的部分代码:public final static DateFormat getInstance();public final static DateFormat getInstance(int style);public final static DateFormat getInstance(int style, Local loc);例:Date date = new Date();String strDate = DateFormat.getInstance().Format(date);

第10页:工厂方法模式的动机与问题

4.2工厂模式(Factory Method Pattern)

  • 简单工厂方法的不足
  • 要求工厂是全能型的
  • 不能体现产品的层次性(产品等同化了)
  • 扩展产品时,部分支持开闭原则

第11页:工厂方法模式的解决思路

工厂方法模式解决方法

第12页:工厂方法模式的结构

工厂方法模式结构

第13页:工厂方法模式的补充说明

工厂方法模式说明

  • 目的:定义一个创建产品的接口,而由该接口的子类决定具体实例化哪种产品。将产品的实例化延迟到接口的子类中。
  • 优点
  • 扩展产品时,完全支持开闭原则;
  • 新增子类产品
  • 新增产品树
  • 用同构的产品树替换原有产品树
  • 具有对应的层次结构,Client只通过产品的抽象接口交互,不必明确知道具体的产品
  • 不足
  • 子类数量可能较多

第14页:工厂方法模式的选择与类模版参数化

关于实现

  • 使用简单工厂方法模式
  • 产品结构简单时,特别对于兄弟产品
  • 使用工厂方法模式
  • 产品结构较复杂时,特别是具有多层次结构的产品树
  • 必要时可使用类模版减少子类数量

第15页:类模版参数化工厂的示例代码

template <class TheProduct>

  • class MyCreator:public Creator
  • {
  • public:
virtual Product * CreateProduct(); }; template <class TheProduct> Product * MyCreator<TheProduct>::CreateProduct( ) { return new TheProduct; }

第16页:抽象工厂模式的提出背景

4.3抽象工厂方法具有相同结构层次的产品树

第17页:产品对象间的相关性

可使用工厂方法实现

第18页:产品族结构说明

上例中的特性

  • 两个产品树,具有相同的结构
  • 所有产品,可分为多个系列(基础英语,专业英语,软件工程三个系列)
  • Client(学生)只能同时使用同一系列中的产品(学习基础英语,只能使用公外英语教师;学习基础英语,只能使用专业英语教师;学习软件工程,只能使用专业课程教师)

第19页:

第20页:抽象工厂模式的结构

抽象工厂结构

第21页:抽象工厂模式的说明与对比

抽象工厂模式说明

  • 适应性
  • 存在多个产品族(系列),客户只消费其中某一族产品;
  • 需要在设计时,体现上述特性
  • 优点
  • 容易更换产品系列
  • 限制客户跨系列消费产品;
  • 不足
  • 难以添加新种类产品
顶部目录