写点什么

学习总结 - 架构师训练营 - 第三周

发布于: 2020 年 06 月 24 日
  • 设计模式:

创建模式:抽象类的实例化过程 - 简单工厂、单例模式

结构模式:描述类和对象之间如何进行有效的组织,结合成更大的结构 - 适配器模式、装饰者模式、组合模式

行为模式:在不同对象间划分责任,抽象算法。描述类和对象之间如何交互及如何分配职责 - 模板模式、策略模式



  • 简单工厂:

  1. 不足:需要通过参数决定实例化的对象。

  2. 改进:利用反射,从配置文件读取并实例化对象,避免扩展时对代码的修改;

  3. 另一个维度:简单工厂(一个工厂造同一类产品)、工厂模式(不同的工厂造同一种类的不同产品)、抽象工厂(不同的工厂造多种类的多个产品)



  • 单例模式:

  1. 一个类仅有一个实例

性能:减少创建和销毁的消耗

功能:便于统一控制

  1. 实现:

私有化构造函数,static方法获取实例。尽量把单例设计成无状态的对象,避免多线程重用造成问题。

饿汉式:直接初始化实例;线程安全。推荐(简单实用)。

懒汉式:调用时初始化实例;synchronized保证线程安全。双层锁。



  • 适配器模式

将现有类的接口/方法,转成我们需要的接口。

类适配器:实现适配器接口;继承被适配的类的方法;通过调用类的方法实现适配。

对象适配器:实现适配器接口;传入被适配的类的对象;通过调用对象的方法实现适配。



  • 模板方法模式 - 行为模式,扩展功能。

基类负责算法的轮廓和骨架:一定有个控制流程的模板方法;

子类负责算法的具体实现:通过继承,子类覆盖基类的方法。

模板方法的形式:

抽象方法(强制实现),具体方法(默认行为),钩子方法(空实现、完全用于扩展)



  • 策略模式

多个类,它们之间的区别仅在于它们的行为;

将调用方法的if/else,通过多态,变成了创建对象的if/else;(使用者与具体的实现分离)

简单工厂创建对象实例,策略模式调用实例的方法。



  • 组合模式

忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象;

表达对象的部分-整体的层次结构。

统一的组合接口;管理组合的部件/分支的方法(增加、删除子节点等);要实现的功能/动作(遍历调用子节点的相同方法)(大树的树杈和叶子;母公司和子公司/分支机构。)



  • 装饰器模式

保持接口不变,形成一条链(套娃);

构造函数接收参数:父类/接口实例;调用传入的实例的方法,在加上自己的处理;

动态的职责组合,实现透明的为对象添加功能,扩展外围的功能。

策略模式、模板方法模式:扩展内部实现

用户头像

还未添加个人签名 2020.04.13 加入

还未添加个人简介

评论

发布
暂无评论
学习总结 - 架构师训练营 - 第三周