Joker Won's Stack

Joker Won

热衷于各种前端技术,目前偏爱钻研前端工程化。希望能找个大佬带带我 >_<。

设计模式

七大设计原则

  • 开闭原则(OSP)

  • 单一职责原则

    对修改开放,对扩展关闭。

  • 里氏替换原则(LSP)

    凡是父类可以出现的地方,子类一定可以出现,且输出一致。反之则不成立。

    • 子类可以实现父类的抽象方法,尽量不要去修改父类的非抽象方法。

    • 子类可以扩展父类方法。

    • 当子类覆盖或实现父类方法时,子类方法的输入参数要比父类方法的输入参数更加宽松,不能相同。

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      class Sup {
      public doSomething(HashMap<String, String> map) {
      System.out.println("父类方法");
      }
      }

      class Sub {
      public doSomething(Map<String, String> map) {
      System.out.println('子类方法');
      }
      }

      main() {
      Sup sup = new Sup();
      sup.doSomething(new HashMap<String, String>());
      // 把上面的Sup换成Sub,输出不会改变。符合里氏替换原则
      }
  • 接口隔离原则(ISP)

  • 依赖倒置原则(DIP)

  • 迪米特原则

  • 合成/聚合复用原则