第三周课程总结

用户头像
考尔菲德
关注
发布于: 2020 年 06 月 24 日

一、面向对象的设计模式框架图



二、设计模式的定义

概念:每一种模式都描述了一种问题的通用解决方案,这种问题在我们的环境中,不停地出现,设计模式是一种可重复使用的解决方案

组成部分:

  • 模式的名称

  • 问题域 — 运用模式的场景以及环境(上下文)

  • 解决方案 — 组成设计模式的元素(类和对象)、他们的关系、职责以及合作。但是这种解决方案是抽象的,它不代表具体的实现

  • 结论 — 运用这种方案所带来的利与弊,主要是指它对系统的弹性、扩展性和可移植性的影响



三、设计模式的分类

  • 从功能上分

  • 创建模式 — 对类的实例化过程的抽象

  • 从方式上分

  • 以继承的方式实现模式,静态的



四、设计模式的介绍

A.工厂模式

  • 定义

Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses

  • 类图



B.单例模式

  • 定义

单例模式保证产生单一实例,就是说一个类只生成一个实例

  • 使用的场景

因为只有一个实例,可以减少实例频繁创建和销毁带来的资源消耗 --- 性能需求

当多个用户公用一个单例的时候,便于进行统一控制 --- 功能需求

  • 单例的经典实现模式

饿汉模式

懒汉模式(线程不安全)

懒汉模式(线程安全)

双重检查模式



C.适配器模式

类的适配器 实现接口+继承类 不推荐

对象的适配器 实现接口+组合另一个接口

程序需要依赖倒置原则,对于已定义好的接口进行编程,如果原有接口不支持,使用适配器模式去兼容



D.模板方法模式

  • 定义

在基类中定义过程,在过程中定义方法的执行顺序,而真正方法的实现是在子类中提供。

  • 组成部分

  • 抽象方法

  • protected abstract void step1();

  • 强制子类实现该步骤

  • 具体方法

  • protected void doSomething(){...}

  • 子类不需要覆盖,但也可以覆盖;

  • 如果想明确不能覆盖,那么该方法申明“final”

  • 钩子方法

  • protected void setUp(){}

  • 空的实现(缺省适配器模式)

  • 子类可选择性地覆盖该方法,以便在特定的时间做些事情;



E.组合模式

  • 定义

一种对象的结构模式,特别适合用于树形结构的处理

  • 组合模式的定义类图

  • 组合模式的应用

文件系统和AWT控件等,关系图如下:



 F.装饰器模式 — 对象的结构模式

  • 作用

在不改变客户端接口的前提下,扩展现有对象的功能 

  • 类图如下:

  • 应用场景

集合的同步化装饰器 — Collections.synchronizedList(list),取代原先的Vector、Hashtable等同步类

Java中I/O类库中的类普遍使用了该模式



用户头像

考尔菲德

关注

还未添加个人签名 2018.04.19 加入

还未添加个人简介

评论

发布
暂无评论
第三周课程总结