学习总结 - 架构师训练营 - 第三周
设计模式:
创建模式:抽象类的实例化过程 - 简单工厂、单例模式
结构模式:描述类和对象之间如何进行有效的组织,结合成更大的结构 - 适配器模式、装饰者模式、组合模式
行为模式:在不同对象间划分责任,抽象算法。描述类和对象之间如何交互及如何分配职责 - 模板模式、策略模式
简单工厂:
不足:需要通过参数决定实例化的对象。
改进:利用反射,从配置文件读取并实例化对象,避免扩展时对代码的修改;
另一个维度:简单工厂(一个工厂造同一类产品)、工厂模式(不同的工厂造同一种类的不同产品)、抽象工厂(不同的工厂造多种类的多个产品)
单例模式:
一个类仅有一个实例
性能:减少创建和销毁的消耗
功能:便于统一控制
实现:
私有化构造函数,static方法获取实例。尽量把单例设计成无状态的对象,避免多线程重用造成问题。
饿汉式:直接初始化实例;线程安全。推荐(简单实用)。
懒汉式:调用时初始化实例;synchronized保证线程安全。双层锁。
适配器模式
将现有类的接口/方法,转成我们需要的接口。
类适配器:实现适配器接口;继承被适配的类的方法;通过调用类的方法实现适配。
对象适配器:实现适配器接口;传入被适配的类的对象;通过调用对象的方法实现适配。
模板方法模式 - 行为模式,扩展功能。
基类负责算法的轮廓和骨架:一定有个控制流程的模板方法;
子类负责算法的具体实现:通过继承,子类覆盖基类的方法。
模板方法的形式:
抽象方法(强制实现),具体方法(默认行为),钩子方法(空实现、完全用于扩展)
策略模式
多个类,它们之间的区别仅在于它们的行为;
将调用方法的if/else,通过多态,变成了创建对象的if/else;(使用者与具体的实现分离)
简单工厂创建对象实例,策略模式调用实例的方法。
组合模式
忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象;
表达对象的部分-整体的层次结构。
统一的组合接口;管理组合的部件/分支的方法(增加、删除子节点等);要实现的功能/动作(遍历调用子节点的相同方法)(大树的树杈和叶子;母公司和子公司/分支机构。)
装饰器模式
保持接口不变,形成一条链(套娃);
构造函数接收参数:父类/接口实例;调用传入的实例的方法,在加上自己的处理;
动态的职责组合,实现透明的为对象添加功能,扩展外围的功能。
策略模式、模板方法模式:扩展内部实现
评论