1.单一职责

  • 描述:
    • 方法:符合当前对象的特征和行为,当前对象的行为比较少。
    • 类:符合当前对象的特征和行为,一个类只负责一项职责
  • 案例1(错误):
  • 描述:

    • 如果类A负责俩个不同的职责:职责1,职责2。
    • 当职责1需求变更而改变A时,可能造成职责2执行错误,所以需要将A的粒度分为A1,A2。
      1. class Class1{
      2. public void main(String args[]){
      3. Bus bus= new bus();
      4. bus.run("飞机");//错误,不符合飞机的飞行方式
      5. bus.run("小汽车");//正确
      6. }
      7. }
      8. class Bus{
      9. public void run(String vargs){
      10. System.out.println(vargs+"在陆地跑");
      11. }
      12. }
  • 结论:违反单一职责的原则

  • 案例2(正确):

    1. class Class2{
    2. public void main(String args[]){
    3. Bus bus= new bus();
    4. Aircraft aircraft = new Aircraft();
    5. aircraft.run("飞机");
    6. bus.run("小汽车");
    7. }
    8. }
    9. //违反单一职责的原则,调用实现的功能不正确
    10. class Aircraft{
    11. public void run(String vargs){
    12. System.out.println(vargs+"在天上飞);
    13. }
    14. }
    15. class Bus{
    16. public void run(String vargs){
    17. System.out.println(vargs+"在陆地跑");
    18. }
    19. }
  • 结论:符合单一职责的原则,按类拆分(符合当前对象)

  • 案例3:

    1. class Class3{
    2. public void main(String args[]){
    3. Vehicle vehicle= new Vehicle();
    4. vehicle.run("飞机");
    5. bus.run("小汽车");
    6. }
    7. }
    8. class Vehicle{
    9. public void aircraftRun(String vargs){
    10. System.out.println(vargs+"在天上飞);
    11. }
    12. public void run(String vargs){
    13. System.out.println(vargs+"在陆地跑");
    14. }
    15. }
  • 结论:方法符合单一职责的原则

    2.接口隔离

  • 使用:

    • 将一个大的接口,拆分成需要的接口,从而减少不必要的实现。
    • 客户端不应该依赖它不需要的接口,既一个类对另一个类的依赖应该建立在最小的接口上
  • 类图:
    • image.png
  • 描述:类A通过接口Interface1 依赖类B,类C通过接口Interface1依赖D,如果接口Interface1 对于A和类C来说,不是最小接口,那么类B和类D 必须去实现他们不需要的方法。
  • 按隔离原则处理:
    • 接口Interface1 拆分为独立的几个接口(这里我们拆分为3个接口),类A和类C分别与他们需要的接口建立依赖关系。采用接口隔离原则。
  • 案例:

    3.依赖倒转(依赖倒置)(Dependence Inversion Principle)

  • 描述:

    • 高层模块不应依赖低层模块。二者都应该依赖其抽象。
    • 抽象不应该依赖细节,细节应该依赖抽象。
    • 依赖倒转的中心思想是面向接口编程。
  • 依赖倒转的实现方式 3种
    • 接口依赖
    • 构造方法依赖传递
    • 通过setter方法传递
  • 案例:image.png
  • 案例2:image.png
  • 案例3:image.png

4.里氏替换

5.开闭原则

6.厘米特法则

7.合成复用