设计模式(一)

发布 : 2019-04-20 分类 : 设计模式 浏览 :

《图解设计模式》、菜鸟教程设计模式

什么是设计模式

设计模式是计算机前辈们多年编码总结出的一套可复用的、便于维护的编码模式。

设计模式方便我们进行沟通,提升代码可维护性,同样方便理解复杂的系统架构

设计模式原则

在设计模式的使用中,遵循以下 6 个原则:

  • 开闭原则
    对扩展开放,对修改关闭
  • 里氏替换原则
    所有父类出现的地方,子类亦可以出现。Java 中多态的使用便是对里氏替换原则的实现
  • 依赖倒转原则
    针对接口编程,依赖于抽象而不依赖与具体。易扩展
  • 接口隔离
    或者可以说是单一职责原则,每个抽象只负责自己域的行为。降低类之间的耦合度
  • 迪米特原则或者最少知道原则
    每个类应当尽可能的独立,减少对其他的依赖
  • 合成复用原则
    多使用组合,少使用继承。更加灵活易维护

设计模式分类

在《图解设计模式》一书以及各大博客文章中,设计模式主要有 23 中,并以创建型、结构型、行为型进行分类。

以下为 23 中设计模式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
- 创建型
- 单例模式
- 抽象工厂模式
- 工厂模式
- 模板方法模式
- 建造者模式
- 结构型
- 原型模式
- 代理模式
- 适配器模式
- 桥接模式
- 过滤器模式
- 组合模式
- 装饰器模式
- 外观模式
- 享元模式
- 行为型
- 责任链模式
- 命令模式
- 解释器模式
- 迭代器模式
- 中介者模式
- 备忘录模式
- 观察者模式
- 状态模式
- 访问者模式
- 空对象模式
- 策略模式
- 模板模式
  • 单例模式、享元模式、原型模式

    在一定程度上,三者都有避免对象重复创建与销毁的意图。具体区别:

    1. 单例模式更多的是一个全局对象,可以对各个对象共享其状态。实例对象只有一个,节省系统资源。主要实现方式是私有化构造器并提供静态工厂方法返回唯一实例。
    2. 享元模式也是用于减少对象的创建,运用共享有效的支持大粒度的对象。即对大对象不必重复创建,直接使用以有的。类似与将大对象缓存。主要实现方式是缓存已创建的对象(通过 map 结构进行存储),当需要同样结构的对象时不再重复创建(同样是提供一个工厂方法返回实例),而是直接返回已有的对象。对枚举对象也相像,不过枚举值是固定数量的,而享元模式中对象实例灵活可变的 3.对于大对象的重复创建,原型模式则是从自身出发,提供一个克隆接口将自己复制,以此提高性能。
  • 代理模式、装饰器模式、适配器模式、策略模式

    装饰器模式、适配器模式、策略模式更多的像不同场景下代理模式的变体,或者这四个模式有共同的特征:最终行为的实现是通过其他对象实现的。

    1. 代理模式和适配器模式的区别:适配器模式主要改变所考虑对象的接口,而代理模式不能改变所代理类的接口。
    2. 代理模式和装饰器模式的区别:装饰器模式为了增强功能,而代理模式是为了加以控制。
    3. 代理模式和策略模式的区别:策略模式是对方法的实现与对象解耦,代理模式更多代理的是对象。
  • 状态模式、备忘录模式

    状态模式则是不同的状态对应不同的行为,对应 Java 中则是很类似枚举对象的实现,不同的枚举对象有着不同的方法实现;
    备忘录模式内部也维护者一个状态,备忘录模式更多的是对对象状态的存储,以便恢复之前或者上一个状态

  • 工厂模式、抽象工厂、模板方法

    工厂模式是用来创建实例的,而抽象工厂是对各个抽象零件的组装,模板方法则是提供不可被子类修改的方法模板进行使用

  • 抽象工厂、组合模式 这二者比较相像,组合模式是对类的组装,抽象工厂更多的是对接口的组装

  • 责任链模式、过滤器模式、链式操作等等

    在责任链中则是通过每个处理对象构造时确定好了下一级处理对象,将被处理对象进行传递
    而过滤器与链式操作则是对同一数据结构的对象操作,然后接着然后同样数据结构类型的数据,依次可以一直进行链式操作

解释器模式与命令模式

对于一些命令操作等,可以封装为命令对象,然后进行操作
解释器模式则是对于语法的解析,比如sql语法等,需要构建语法树,进行递归解析
本文作者 : 对六
原文链接 : http://duiliuliu.github.io/2019/04/20/设计模式一/
版权声明 : 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!

你我共勉!

微信

微信

支付宝

支付宝

留下足迹