设计模式(一)
《图解设计模式》、菜鸟教程设计模式
什么是设计模式
设计模式是计算机前辈们多年编码总结出的一套可复用的、便于维护的编码模式。
设计模式方便我们进行沟通,提升代码可维护性,同样方便理解复杂的系统架构
设计模式原则
在设计模式的使用中,遵循以下 6 个原则:
- 开闭原则
对扩展开放,对修改关闭 - 里氏替换原则
所有父类出现的地方,子类亦可以出现。Java 中多态的使用便是对里氏替换原则的实现 - 依赖倒转原则
针对接口编程,依赖于抽象而不依赖与具体。易扩展 - 接口隔离
或者可以说是单一职责原则,每个抽象只负责自己域的行为。降低类之间的耦合度 - 迪米特原则或者最少知道原则
每个类应当尽可能的独立,减少对其他的依赖 - 合成复用原则
多使用组合,少使用继承。更加灵活易维护
设计模式分类
在《图解设计模式》一书以及各大博客文章中,设计模式主要有 23 中,并以创建型、结构型、行为型进行分类。
以下为 23 中设计模式:
1 | - 创建型 |
单例模式、享元模式、原型模式
在一定程度上,三者都有避免对象重复创建与销毁的意图。具体区别:
- 单例模式更多的是一个全局对象,可以对各个对象共享其状态。实例对象只有一个,节省系统资源。主要实现方式是私有化构造器并提供静态工厂方法返回唯一实例。
- 享元模式也是用于减少对象的创建,运用共享有效的支持大粒度的对象。即对大对象不必重复创建,直接使用以有的。类似与将大对象缓存。主要实现方式是缓存已创建的对象(通过 map 结构进行存储),当需要同样结构的对象时不再重复创建(同样是提供一个工厂方法返回实例),而是直接返回已有的对象。对枚举对象也相像,不过枚举值是固定数量的,而享元模式中对象实例灵活可变的 3.对于大对象的重复创建,原型模式则是从自身出发,提供一个克隆接口将自己复制,以此提高性能。
代理模式、装饰器模式、适配器模式、策略模式
装饰器模式、适配器模式、策略模式更多的像不同场景下代理模式的变体,或者这四个模式有共同的特征:最终行为的实现是通过其他对象实现的。
- 代理模式和适配器模式的区别:适配器模式主要改变所考虑对象的接口,而代理模式不能改变所代理类的接口。
- 代理模式和装饰器模式的区别:装饰器模式为了增强功能,而代理模式是为了加以控制。
- 代理模式和策略模式的区别:策略模式是对方法的实现与对象解耦,代理模式更多代理的是对象。
状态模式、备忘录模式
状态模式则是不同的状态对应不同的行为,对应 Java 中则是很类似枚举对象的实现,不同的枚举对象有着不同的方法实现;
备忘录模式内部也维护者一个状态,备忘录模式更多的是对对象状态的存储,以便恢复之前或者上一个状态工厂模式、抽象工厂、模板方法
工厂模式是用来创建实例的,而抽象工厂是对各个抽象零件的组装,模板方法则是提供不可被子类修改的方法模板进行使用
抽象工厂、组合模式 这二者比较相像,组合模式是对类的组装,抽象工厂更多的是对接口的组装
责任链模式、过滤器模式、链式操作等等
在责任链中则是通过每个处理对象构造时确定好了下一级处理对象,将被处理对象进行传递
而过滤器与链式操作则是对同一数据结构的对象操作,然后接着然后同样数据结构类型的数据,依次可以一直进行链式操作
解释器模式与命令模式
对于一些命令操作等,可以封装为命令对象,然后进行操作
解释器模式则是对于语法的解析,比如sql语法等,需要构建语法树,进行递归解析
本文作者 : 对六
原文链接 : http://duiliuliu.github.io/2019/04/20/设计模式一/
版权声明 : 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
你我共勉!