设计原则 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网关
标签:原则,对象,接口,模式,基类,设计模式,Principle From: https://www.cnblogs.com/jiaqirumeng/p/17184474.html