设计模式的原则
针对一个复杂问题,一般有两种解决方法:
- 分解(使用if else分别处理),针对多种情况分别讨论(switch case)。
- 抽象(使用多态统一处理),通过面向对象多态特性,不同的情况使用同一的接口处理。
设计原则:
- 依赖倒置原则:高层(稳定)不应依赖于低层(变化),而应该依赖于抽象(某个主类不应依赖于细分类)。
- 单一职责原则:类的职责应该单一,否则应该进行拆分。
- 开闭原则:对扩展开放,对更改关闭。类确定后应该尽量避免对源代码的修改。
- 里氏替换原则:子类应该能够替换父类(is a)(类B继承类A时,除添加新的方法完成新增功外,尽量不要重写父类A的方法,
也尽量不要重载父类A的方法。) - 接口隔离原则:接口应该小而完备,即public的方法小而完备,防止其他类产生依赖。
- 迪米特最少知道原则:(我们称出现成员变量、方法参数、方法返回值中的类为直接的朋友, 而出现在局部变量中的类则不是
接的朋友。也就是说,陌生的类最好不要作为局部变量的形式出现在类的内部。) - 优先类组合而不是类继承原则
设计模式的要点是:
- 寻找变化和稳定的分离点,在变化处应用设计模式(分清楚是稳定还是变化),将稳定的抽到抽象类。在设计类的时候思考将来类哪个部分可能会出现扩展,思考在此处运用设计模式。
设计模式分类:
- 从目的划分:
创建型、结构型、行为型 - 从范围划分:
类模式:类与子类的静态关系
对象模式:对象之间的动态关系