一、 六大设计原则
1. 单一职责原则 (Single Responsibility Principle, SRP)
2. 李氏替换原则(Liskov Substitution Principle, LSP)
- 子类可以重载父类的方法
- 父类的方法输入参数宽度必须比子类(重载或覆写)的宽度大,这样用子类去调用方法时会调用父类方法执行
- 父类的方法返回参数宽度必须必子类(重载或覆写)的宽度大
3. 依赖倒置原则 (Dependence Inversion Principle, DIP)
何为正置何为倒置:正置,可以理解成类之间的依赖是实实在在实例间的依赖,就是我们现实生活中的思维。而倒置是程序世界里,面对的是抽象类或者接口这种抽象的理念,就是我们通常所说的面向接口编程。通过将依赖倒置,可以实现模块间的松耦合,降低多成员并行开发的风险和效率,提高系统的稳定性。
- 构造函数注入
- setter方法注入
- 接口方法注入
4. 接口隔离原则
接口的方法尽量少。与单一职责所不同的是,单一职责通常是业务上的划分,注重的是职责。接口隔离原则是尽量使用专门的接口,接口中的方法尽量少。
5. 迪米特原则 (Law of Demeter, LOD)
类间解耦,对所依赖的类知道的越少越好。要求累尽量内联,提供尽量少的public方法。
6. 开闭原则
对拓展开放,对修改关闭。
二、 设计模式
模版方法模式
image.png父类提供几个抽象方法,并定义一个final 方法,子类自定义实现抽象方法。
主要是针对某一特定的多方法执行顺序,但是多方法需要不同的处理方法。
责任链模式
image.png结合模版方法模式。设置调用链处理方式。
通过设置下级节点的方式,组装成一个调用链。【注意调用链不宜过长,会导致业务代码过于负责,调试困难等问题】一个需求只管将请求发送给第一个节点,就会返回一个结果,不知道是谁具体处理。处理器也只负责处理接收到的请求,不知道请求是谁发送的。
装饰器模式
image.png类似代理模式。与原始类实现同一接口,并通过关联原始子类对象,加入自己的私有方法,重写父类方法来对方法进行增强。
策略模式
image.png策略类,锦囊类,锦囊类依赖策略类
适配器模式
迭代器模式
image.png组合模式
组合模式又叫合成模式,有时又叫部分-整体模式,主要用来描述部分-整体的关系。
将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户多单个对象和组合对象的使用具有一致性。
image.png
观察者模式
image.png门面模式(Facade Pattern)
门面模式,也叫外观模式。
定义:要求一个子系统的外部与其内部的通信必须通 过一个统一的对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。
image.png
备忘录模式
image.png访问者模式
image.png通过一个visitor接口定义访问者,并设置可以访问的类型。
element类设置自己可以被哪个访问者访问。
状态模式
当一个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其类。
image.png
解释器模式
享元模式
image.png享元模式(Flyweight Pattern)是池技术的重要实现方式。
使用共享对象可有效地支持大量的细 粒度的对象。
桥梁模式
image.png解决问题:继承的缺点,强入侵!
Father类有一个方法A,Son继承了这个方法,然后GrandSon也继承了这个方法, 问题是突然有一天Son要重写父类的这个方法。GrandSon要用从Father 继承过来的方法A,如果你修改了,那就要修改Son和GrandSon之间的关系,风险很大。
网友评论