第三周课程总结
一、面向对象的设计模式框架图
二、设计模式的定义
概念:每一种模式都描述了一种问题的通用解决方案,这种问题在我们的环境中,不停地出现,设计模式是一种可重复使用的解决方案
组成部分:
模式的名称
问题域 — 运用模式的场景以及环境(上下文)
解决方案 — 组成设计模式的元素(类和对象)、他们的关系、职责以及合作。但是这种解决方案是抽象的,它不代表具体的实现
结论 — 运用这种方案所带来的利与弊,主要是指它对系统的弹性、扩展性和可移植性的影响
三、设计模式的分类
从功能上分
创建模式 — 对类的实例化过程的抽象
从方式上分
以继承的方式实现模式,静态的
四、设计模式的介绍
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类库中的类普遍使用了该模式
评论