设计模式七大原则

  1. 单一职责原则

    • 核心

      一个类只负责一项职责

    • 优点

      1. 降低类的复杂度
      2. 提高类的可读性和可维护性
      3. 降低变更引起的风险
      4. 如果逻辑比较简单,可以在方法上遵守单一职责,降低代码量
    • 实例

      1. 交通工具

        分为轮船,飞机、汽车。每个类实现一个职责

      2. DAO类

        一个DAO负责一个表的增删改查。

    • 代码

      代码部分参考了尚硅谷韩顺平老师的内容。

      /**
      * @program:design_pattern
      * @descript:公路
      * @author: luyongjian746
      * @create: 2020-02-11
      */
      public class Road {
      
         public void run(String vehicle) {
             System.out.println(vehicle + "在公路上跑");
         }
      }
       /**
        * @program:design_pattern
        * @descript:天空
        * @author: luyongjian746
        * @create: 2020-02-11
        */
       public class Sky {
      
           public void run(String vehicle) {
               System.out.println(vehicle + "在空中飞");
           }
       }
      /**
      * @program:design_pattern
      * @descript:海
      * @author: luyongjian746
      * @create: 2020-02-11
      */
      public class Sea {
      
         public void run(String vehicle) {
             System.out.println(vehicle + "在海中航行");
         }
      }
      /**
      * @program:design_pattern
      * @descript:测试
      * @author: luyongjian746
      * @create: 2020-02-11
      */
      public class Test {
      
         public static void main(String[] args) {
             Road road = new Road();
             road.run("汽车");
      
             Sky sky = new Sky();
             sky.run("飞机");
      
             Sea sea = new Sea();
             sea.run("轮船");
         }
      }

      结果:

      汽车在公路上跑
      飞机在空中飞
      轮船在海中航行
  2. 接口隔离原则

    • 核心

      客户端不应该依赖于他不需要的接口。即一个类对另外一个类的依赖,应该建立在最小的接口上。

      将大接口拆解成多个小的接口。

    • 优点

    • 实例

    • 代码
  3. 依赖倒置原则

    • 核心
      1. 高层模块不应该依赖底层模块。二者都应该依赖其抽象。
      2. 抽象不应该依赖细节,细节应该依赖其抽象。
      3. 核心为面向接口编程。
    • 优点
    • 实例
    • 代码
  4. 里式替换原则

    • 核心

      子类继承父类时尽量不要重写父类的方法。

    • 优点

    • 实例

    • 代码
  5. 开闭原则

    • 核心

      对扩展开放,对修改关闭。用抽象构建框架,用实现扩展细节。

    • 优点

    • 实例

    • 代码
  6. 迪米特法则

    • 核心

      一个类应该对其他对象保持最小的了解。

      如果不是直接朋友,在一个方法中出现了其他类的局部变量,就违反了迪米特法则。

      直接朋友是指,某方法的参数,返回值所使用的类,则此类为该方法所属类的直接朋友。

    • 优点

    • 实例

    • 代码
  7. 合成复用原则

    • 核心

      尽量使用合成或复用代替继承。

      合成:A类作为成员变量或者参数的形式出现在B类

      复用:A类以new A()的方式出现在B类中

    • 优点

    • 实例

    • 代码