代码重构学习笔记

用户头像
胡家鹏
关注
发布于: 2020 年 10 月 03 日
代码重构学习笔记

一、设计模式作用

  1. OOD(Object Oriented Design,面向对象设计)的目标:

  • 设计出强内聚、低耦合的程序

  1. OOD原则:

  • SRP(Single Reponsibility Principle)

  • OCP(Open/Closed Principle,开闭原则)

  • LSP(Liskov Substitution Principle)

  • ISP(Interface Segregation Principle)

  • DIP(Dependency Inversion Principle)

  1. 设计模式

  • 创建模式

  • 结构模式

  • 行为模式

  1. 设计模式定义:

  • 每一种模式都描述了一种问题的通用解决方案,这种问题在我们的环境中会不断出现

  • 设计模式是一种可重复使用的解决方案

  1. 设计模式的四个部分

  • 模式的名称:用于表达我们的设计的名称

  • 待解决的问题:描述了何时需要运用这种模式,以及运用模式的环境(上下文)

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

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

  1. 设计模式分类

  • 从功能分:

  • 创建模式(Creational Patterns):对类的实例化过程的抽象

  • 结构模式(Structural Patterns):将类或者对象结合在一起形成更大的结构

  • 行为模式(Behavioral Patterns):对在不同的对象之间划分责任和算法的抽象化

  • 从方式分:

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

  • 对象模式:以组合的方式实现模式,动态的

  1. 简单工厂模式

  • 使用中,通过接口定义对象,借助工厂类返回对象

  • 基于接口的工厂模式,对该接口实现类的修改,不会影响调用方代码

  • 工厂中接口实现类如果直接使用new方式创建,则工厂就不符合OCP原则;如果使用配置参数方式,通过反射获取对象,可以通过配置修改接口实现类,但是不能借助编译器识别类型安全问题

  1. 单例模式:一个类只能有一个实例

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

  • 功能需求:当多个用户使用这个实例的时候,便于进行统一控制

  • 说明:

  • 一定要有私有构造函数,保证类实例只能通过getInstance()方法获得

  • 懒汉式获取单例对象一定要使用锁+double check方式,避免出现多重实例

  • 注意单例中的成员变量是多线程重用的,所以注意线程安全问题,尽量将单例设计成无状态的

  1. 适配器模式:把已经存在的实现类的方法适配成我们需要的接口的方法



发布于: 2020 年 10 月 03 日 阅读数: 17
用户头像

胡家鹏

关注

还未添加个人签名 2018.04.28 加入

还未添加个人简介

评论

发布
暂无评论
代码重构学习笔记