设计模式原则

设计模式通常遵守以下原则。

单一职责原则

  • 一个类只负责一项职责;

里氏替换原则

  • 子类可以扩展父类的功能,但不能改变父类原有的功能。

    • 子类可以实现父类的方法,但是不能覆盖父类的非抽象方法;
    • 子类可以增加自己特有的方法;
    • 子类的方法重载父类方法时,方法的形参要比父类的方法的输入更宽松;
    • 子类的方法在实现父类的抽象方法时,方法的返回值要比父类更严格;

依赖倒置原则

  • 高层模块不应该因爱低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。
    • 问题:A依赖类B,现在改为A依赖接口C,则必须通过修改类A的代码来实现。类A一般为高层模块,负责复杂的业务逻辑,类B和C是底层模块,负责基本的原子操作,假设修改类A,会带来不必要的风险;
    • 解决:将A修改为依赖接口I,类B和类C各自实现接口I;

接口隔离原则

  • 客户端不应该依赖他不需要的接口;
  • 一个类对另一个类的依赖应该建立在最小的接口上;
    • 类A通过接口I依赖类B,类C通过接口I依赖类D,如果接口I对于类A和类B来说不是最小接口,则类B和类C必须去实现他们不需要的方法;
    • 解决:将臃肿的接口I分拆为独立的几个接口;

迪米特法则

  • 一个对象应该对其他对象保持最少的了解;

开闭原则

  • 对扩展开放,对修改关闭;
  • 理论上来说就是在扩展代码的过程中,不要对原有的旧代码引入错误;