设计模式

设计原则 solid

1、开闭原则(Open Close Principle)

开闭原则的意思是:对扩展开放,对修改关闭。

2、里氏代换原则(Liskov Substitution Principle)

里氏代换原则是面向对象设计的基本原则之一。里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。LSP 是继承复用的基石,只有当派生类可以替换掉基类,且软件单位的功能不受到影响时,基类才能真正被复用,而派生类也能够在基类的基础上增加新的行为。里氏代换原则是对开闭原则的补充。实现开闭原则的关键步骤就是抽象化,而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。

3、依赖倒转原则(Dependence Inversion Principle)

这个原则是开闭原则的基础,具体内容:针对接口编程,依赖于抽象而不依赖于具体。

4、接口隔离原则(Interface Segregation Principle)

这个原则的意思是:使用多个隔离的接口,比使用单个接口要好。它还有另外一个意思是:降低类之间的耦合度。由此可见,其实设计模式就是从大型软件架构出发、便于升级和维护的软件设计思想,它强调降低依赖,降低耦合。

5、迪米特法则,又称最少知道原则(Demeter Principle)

最少知道原则是指:一个实体应当尽量少地与其他实体之间发生相互作用,使得系统功能模块相对独立。

6、单一职责原则(Single-Responsibility-Principle)

一个类或者一个方法只负责一项职责,尽量做到类的只有一个行为原因引起变化。

设计模式分类:

1.创建型

  • 工厂方法模式

对象的实例化方法由对应的对象工厂提供.

简单工厂:spring bean工厂

抽象工厂

  • 单例模式

一个类在系统中只拥有一个对象

  • 原型模式

以一个对象为模板,用于快速创建新对象

浅克隆/深克隆

  • 构建者模式

2.结构型

  • 享元模式

重要的系统资源重复利用: 线程池,连接池,对象池各种池技术,如Integer 的缓存,String

  • 适配器模式

A系统需要使用a接口的对象,但是现在只能提供b接口的对象,适配器实现a接口将b对象的功能进行转化提供A系统使用.

例如mysql数据库java驱动

  • 代理模式

需要隐藏真实对象,并且实现某些方法的增强.代理模式分静态代理 & 动态代理

动态代理:jdk动态代理,基于接口的实现;cglib动态代理:基于继承方式

spring aop 日志 缓存 事务等

  • 装饰器模式

允许向一个现有的对象添加新的功能,同时又不改变其结构,例如java的各种流操作

  • 模板方法模式
  • 组合模式

菜单,树形结构

  • 外观模式

统一的变化,例如各种皮肤

  • 桥接模式

一个对象有多个维度的变化,可以把这几个维度抽象

3.行为型

  • 备忘录模式

对对象的某个时刻的状态保存.例如游戏的存档

  • 责任链模式

将一个请求从链的首端发出,沿着链的路径依次传递每个节点对象,直到有对象处理这个请求为止. 具体实现如:spring的filter,OKHttp3框架及Netty NIO框架也都使用了责任链模式设计

  • 命令模式
  • 状态模式
  • 解释器模式

具体实现如虚拟机的解释器,sql解析

  • 中介者模式
  • 策略模式

通过使用不通的策略来实现具体的操作逻辑. 如线程池拒绝策略,微服务ribbon的路由策略

  • 观察者模式

一个对象的变化可通知到其他对象, 典型的案例是mq消息中间件

  • 迭代器模式

集合类可迭代内部元素,jdk中的集合类使用此模式

  • 访问者模式

提供了一个系统的统一访问,实现的典型案例:api网关

 

posted @ 2023-03-06 16:49  佳琪如梦  阅读(5)  评论(0编辑  收藏  举报