设计模式的几个原则

  1. 单一职责原则:
    a. 就一个类而言,应该仅有一个引起它变化的原因。
    b. 如果能够想到多余一个的动机去改变一个类,那么这个类就具有多余一个的职责,就应该考虑类的职责的分离。

  2. 开放—封闭原则:
    a. 开放拓展,封闭更改。
    b. 多拓展,少修改。
    c. 总会有无法预测的需求(不可能完全的封闭),所以,必须先猜测出最有可能发生变化的种类,然后构造抽象来隔离那些变化。
    d. 当发变化时要尽快创建抽象隔离变化,以免发生同类变化。
    e. 开放—封闭之后要做到——>面对需求(变化),对程序的改动是增加新的代码进行的,而不是修改原来的代码。(需要做到代码的拓展性比较好)
    f. 应仅对程序中出现频繁变化的那些部分做出抽象,而不能可以抽象。

  3. 依赖倒转原则:
    a. 高层模块不应该依赖低层模块,两者都应该依赖抽象*(抽象类或接口)*。
    b. 针对接口编程,不要对实现编程。
    c. 强内聚,松耦合
    —比如访问数据库时,我们吧访问数据库的代码写成函数,每次做新项目复用时只要调这些函数即可。

  4. 里氏转换:
    a. 定义:子类必须能够替换它们的父类,而程序没有变化。–>这样父类才能真正被复用,子类也能够在父类基础上拓展。(因为子类拥有父类所有非private的行为和属性)
    b. 运用里氏代换原则时,尽量把父类设计为抽象类或者接口,让子类继承父类或实现父接口,并实现在父类中声明的方法,我们可以很方便地扩展系统的功能,同时无须修改原有子类的代码,增加新的功能可以通过增加一个新的子类来实现。里氏代换原则是开闭原则的具体实现手段之一。

  5. 迪米特法则:
    a. 尽量减少两个对象之间的直接交互,如果一个对象需要调用另一个对象的方法,可以通过第三者来转发这个调用,即通过引入合理的第三者来降低现有对象的耦合。
    b. 在类的设计上,尽量降低类之间的耦合,避免修个某个类需要大动干戈。
    c. 在类的结构上,尽量减少类中的变量及函数的访问权限。
    d. 在类之间的引用上,尽量降低的出现一个对象对其他的引用。

  6. 合成复用原则:
    a. 在复用时,使用关联关系(组合关系或聚合关系)来实现功能的复用,而尽量少使用继承复用。

你可能感兴趣的:(编程)