1.单一职责
- 描述:
- 方法:符合当前对象的特征和行为,当前对象的行为比较少。
- 类:符合当前对象的特征和行为,一个类只负责一项职责。
- 案例1(错误):
描述:
- 如果类A负责俩个不同的职责:职责1,职责2。
- 当职责1需求变更而改变A时,可能造成职责2执行错误,所以需要将A的粒度分为A1,A2。
class Class1{public void main(String args[]){Bus bus= new bus();bus.run("飞机");//错误,不符合飞机的飞行方式bus.run("小汽车");//正确}}class Bus{public void run(String vargs){System.out.println(vargs+"在陆地跑");}}
结论:违反单一职责的原则
案例2(正确):
class Class2{public void main(String args[]){Bus bus= new bus();Aircraft aircraft = new Aircraft();aircraft.run("飞机");bus.run("小汽车");}}//违反单一职责的原则,调用实现的功能不正确class Aircraft{public void run(String vargs){System.out.println(vargs+"在天上飞);}}class Bus{public void run(String vargs){System.out.println(vargs+"在陆地跑");}}
结论:符合单一职责的原则,按类拆分(符合当前对象)
案例3:
class Class3{public void main(String args[]){Vehicle vehicle= new Vehicle();vehicle.run("飞机");bus.run("小汽车");}}class Vehicle{public void aircraftRun(String vargs){System.out.println(vargs+"在天上飞);}public void run(String vargs){System.out.println(vargs+"在陆地跑");}}
-
2.接口隔离
使用:
- 将一个大的接口,拆分成需要的接口,从而减少不必要的实现。
- 客户端不应该依赖它不需要的接口,既一个类对另一个类的依赖应该建立在最小的接口上。
- 类图:
- 描述:类A通过接口Interface1 依赖类B,类C通过接口Interface1依赖D,如果接口Interface1 对于A和类C来说,不是最小接口,那么类B和类D 必须去实现他们不需要的方法。
- 按隔离原则处理:
- 接口Interface1 拆分为独立的几个接口(这里我们拆分为3个接口),类A和类C分别与他们需要的接口建立依赖关系。采用接口隔离原则。
-
3.依赖倒转(依赖倒置)(Dependence Inversion Principle)
描述:
- 高层模块不应依赖低层模块。二者都应该依赖其抽象。
- 抽象不应该依赖细节,细节应该依赖抽象。
- 依赖倒转的中心思想是面向接口编程。
- 依赖倒转的实现方式 3种
- 接口依赖
- 构造方法依赖传递
- 通过setter方法传递
- 案例:

- 案例2:

- 案例3:

