• 设计模式-六大基本原则


    0 六大基本原则

    开闭原则:一个类应该对修改关闭,对扩展开放。意思在于,不允许修改一个类的代码达到扩展,但是可以通过该类的基类派生出新的类达到扩展。

    单一职责原则:一个类应该只有一个职责。意思在于能够引起类变化,也就是类修改的原因只应该有一个。一个类应该尽可能做的小,只包含基本的功能。

    接口隔离原则:派生类继承基类,基类应该只包含单一的职责,才会使得派生类不会有无用的功能。其意思是和单一职责原则几乎一样。

    里氏代换原则:在需要基类的地方,如果将基类替换为他的派生类,那么程序亦然能够正常运行

    依赖倒转原则:A类应该使用一个类的基类作为参数或是关联,这样A类就可以使用该基类或是派生类作为参数或是关联。这几乎就是面向对象中的多态。

    迪米特法则:最小知道原则。意思在于一个类只与有限的类发生直接的联系。

    合成复用原则:意思在于尽可能使用使用关联,然后进行方法转发,而不是继承。

    开闭原则

    开闭原则,指的是,通过通过派生同一个类的方式,达到功能的扩展。而不是修改其中一个类的方式达到功能的拓展。

    2 单一职责原则

    每个类所能够做的事情应该尽可能少,只做必要的事情。

    一个类承担过多的功能,使得类过于臃肿。而且当只需要类的一部分功能的时候,那么另一部分功能就会变得多余。

    接口隔离原则

    与当一职责原则类似,当一个基类,拥有过多的功能,那么其派生类也就继承了这些过多的功能。

    因此需要将接口进行再次分解。也就是说接口隔离原则是从接口的角度来解释单一职责原则

    里氏代换原则

    派生类可以完全的替代基类,那么意味着,基类的方法在派生类可用,因此需要是public继承。

    并且派生类不应该掩盖基类的方法,避免派生类中的方法的重载。

    在编程中,使用最多的是基类只是个接口,并不会有哪些地方真正的使用到基类的方法,更多的是使用派生类,因此这条原则是对基类提出要求,基类接口的设计应该尽可能的合理,使得派生类能够使用相同的向外提供功能。

    开闭原则要求使用新的派生类来扩展功能,而里氏替换原则则要求基类的接口尽可能合理,算的上是开闭原则的一种补充,也就是对基类的要求。

    迪米特法则

    最少知道原则,但是实际上,更合理的名称或是解释,一个类尽可能少的被其他类直接使用。

    多数文章里都会提到一个朋友和陌生人的名词,也就是说,能够直接使用A类的类,是A类的朋友,不能直接使用A类的类是A类的陌生人。迪米特法则指的就是一个实际功能类应该尽可能少的有朋友。

    其实现,新建一个代理类,实际功能类至于这个代理类通信,而需要调用实际功能类的类,都通过代理类的方法进行转发。

    也就是说迪米特法则,要求创建一个代理类来妆发一个实际功能类的方法,加了一层抽象。

    6 依赖倒置原则

    依赖倒置原则指的是在实际功能类A上面加一层抽象类。因此,当功能扩展的时候,可能出现和A类功能一样的类,这时候其他类只要关联或是使用抽象类,就可以避免修改。

    这条原则是开闭原则和里氏替换原则的具体应用。要求使用基类。

    7 合成复用原则

    因为继承是一种高耦合,为了避免高耦合,使用关联的方式来减少耦合。

    也就是说,合成复用原则,与面向对象原则中的继承相背,该原则提议尽可能少的使用继承。

    8 总结

    这几条原则,总结起来可以理解为:

    1. 使用抽象层,达到拓展功能
    2. 使用隔离层,减少与实际功能类的联系
    3. 使用关联,降低耦合
  • 相关阅读:
    Codeforces467C George and Job
    Codeforces205E Little Elephant and Furik and RubikLittle Elephant and Furik and Rubik
    Codeforce205C Little Elephant and Interval
    51nod1829 函数
    51nod1574 排列转换
    nowcoder35B 小AA的数列
    Codeforce893E Counting Arrays
    gym101612 Consonant Fencity
    CodeForces559C Gerald and Giant Chess
    CodeForces456D A Lot of Games
  • 原文地址:https://www.cnblogs.com/perfy576/p/8547624.html
Copyright © 2020-2023  润新知