作为开发人员,设计模式大家肯定都知道它的重要性,不论在业务系统的架构设计上,还是在技术框架的底层都有许多应用。设计模式是开发人员的基本功,学好设计模式对自己技术生涯,尤为重要。要想把设计模式搞透,除了大量的业务场景帮助理解。另外理解设计原则是重中之中,一切模式都是基于设计原则而来的。
一.设计模式常用的原则
单一职责原则
对类来说的,即一个类应该只负责一项职责。如类 A 负责两个不同职责:职责 1,职责 2。当职责 1 需求变更而改变 A 时,可能造成职责 2 执行错误,所以需要将类 A 的粒度分解为 A1,A2。
开闭原则
对扩展开放对修改关闭,为了使程序的扩展性好,易于维护和升级。
里氏代换原则
任何基类可以出现的地方,子类一定可以出现,多使用多态的方式。
依赖倒转原则
尽量多依赖于抽象类或接口而不是具体实现类,对子类具有强制性和规范性。
接口隔离原则
尽量多使用小接口而不是大接口,避免接口的污染,降低类之间耦合度。
迪米特法则(最少知道原则)
一个实体应当尽量少与其他实体之间发生相互作用,使系统功能模块相对独立。 高内聚,低耦合。
合成复用原则
尽量多使用合成/聚合的方式,而不是继承的方式。(例:如类B需要类A的成员方法,如果使用继承方式,这样类B就不能继承其它类,因为java是单继承。 这时可以在类B 声明一个类A的的成员变量类型 ,作为参数传递给类B的构造方法)。
代码理解:
public class B {
private A a; // 合成复用原则
public B(A a) {
this.a = a;
}
public void test() {
// 调用A类中的show方法,请问如何实现?
a.show();
}
}
二.设计模式分类
设计模式分为三种类型,共23种。
创建型模式:单例模式、抽象工厂、原型模式、建造者模式、工厂模式。
结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。
行为型模式:模板方法模式、命令模式、访问者模式、迭代器模式、观察者模式、中介模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式(责任链模式)。