This website requires JavaScript.

面向对象设计的七大基本原则

1 2021-03-18 05:45:50 54

软件项目中,需求是不断变化的,需求也是项目中最难把控的,需求的变更也是无法避免的。我们写的软件程序,如何能实现拥抱变化,使我们的软件达到可维护和可复用,这是一代代软件工程师不断追寻的真理。

导致一个软件的可维护性较低的原因有四个:

  1. 过于僵硬(Rigidity):比如在系统中新增一个功能,会变得非常复杂,涉及到很多模块的调整,这就是系统僵硬的体现。
  2. 过于脆弱(Fragility):比如对程序中某一个地方的修改,导致看上去没有什么关系的其他地方产生了影响,修改的同时,没有人能预测改动会给系统带来什么风险。
  3. 复用率低(Immobility):比如想使用程序中已有的一段代码、函数、模块时,这些已有的代码总是依赖一大堆其它的东西,很难将它们独立出来使用。
  4. 黏度过高(Viscosity):如果一个系统设计,不能简单的复用一个类或者通过接口来实现扩展,想扩展一个系统功能,必须破坏原始架构,就是黏度过高。

一个好的系统设计应该有如下的性质:

  1. 可扩展性(Extensibility):可以很容易的在系统中加入一个新的功能。

  2. 灵活性(Flexibility):可以很容易的实现对某个代码的修改,而不担心对其他模块产生影响。

  3. 可插入性(Pluggability):可以很容易的将一个类抽出去复用,或者将另一个有同样功能的接口的类加入到系统里。 常用的面向对象设计原则有6个,这6大设计原则都是以可维护性和可复用性为基础的,这些原则并不是孤立存在的,它们相互依赖相互补充,遵循这些设计原则可以有效地提高系统的复用性,同时提高系统的可维护性。

  4. OCP(开闭原则,Open-Closed Principle);

    一个软件实体 如类,模块和函数应该对扩展开放,对修改关闭;

  5. DIP(依赖倒置原则,Dependence Inversion Principle);

    高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。 即针对接口编程,不要针对实现编程.

  6. LoD/LKP(迪米特法则,Law of Demeter / Least Knowledge Principle);

    又叫最少知识原则,一个软件实体应当尽可能少的与其他实体发生相互作用,通俗地讲,一个类应该对自己需要耦合或调用的类知道得最少. 低耦合,高内聚

  7. CARP (组合/聚合复用原则,Composition/Aggregation Reuse Principle);

    尽量使用组合和聚合少使用继承的关系来达到复用的原则.

  8. ISP (接口隔离原则,Interface Segregation Principle);

    建立单一接口,不要建立庞大臃肿的接口,尽量细化接口,接口中的方法尽量少.

  9. LSP (里氏替换原则,Liskov Substitution Principle);

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

  10. SRP (单一职责原则,Single Responsibility Principle);

    一个类负责一项职责.

免责声明

本站提供Hack区的一切软件、教程和仅限用于学习和研究目的;不得将其用于商业或者非法用途,否则,一切后果由用户自己承担 您必须在下载后的24个小时之内, 从您的电脑中彻底删除。如果条件支持,请支持正版,得到更好的服务。 另如有侵权请邮件与我 联系处理。敬请谅解!

本文于   2021/3/18 上午  发布 

永久地址: https://madaoo.com/article/1389201197596020736

版权声明: 自由转载-署名-非商业性使用   |   Creative Commons BY-NC 3.0 CN