设计模式之六大设计原则
面向对象的特征:封装、抽象、继承、多态
单一职责原则(功能拆分)
核心:提高程序的可重用性 一个类只能有一个引起它变化的原因
解决的问题:降低类的复杂度、降低部件的耦合度
里氏代换原则 (继承)
核心:子类必须能够替换掉它们的父类型(即可以向上转型)
开放——封闭原则(抽象化)
核心:程序的实体对象(模块、类、函数等)应该可以进行拓展,可以添加类,但不可以修改类。使得更加容易拓展。
依赖倒转原则(多态)
核心:程序的高层模块不应该依赖于底层模块,但两者都依赖于抽象;
抽象不应该依赖于具体细节,而细节应该依赖于抽象。
注:高层模块尽可能通过调用接口而不是类对象(如注入依赖时,尽量是接口,而不是对象)
这样使得底层模块尽可能使用接口来实现(如Dao层)
合成/聚合原则
核心: 尽可能去使用接口而不是通过继承的方式,子类和父类的高度依赖性限制程序的复用性和程序的灵活程度。
方式:注入对象或者接口
注:JAVA实现复用的两种方式:合成/聚合复用 和继承复用
合成是值的聚合(Aggregation by Value),聚合是则是引用的聚合(Aggregation by Reference)。
合成的组件是依赖于整体的,聚合的组件是可以独立存在的。
迪米特原则(隔离通信)
核心:如果两个类之间不必直接通信,则这两个类不应该发生直接的相互作用。如果其中的一个类需要调用两一个类的方法。可以通过第三方转发这个调用。
举个栗子:皇上召见大臣让太监传话。(“皇上”要求的安全性较高)