什么是面向对象的设计原则
现在, 让我们来谈谈另一套对我们至关重要的概念。
这些都是面向对象的设计原则,它们将作为我们的工具箱, 同时能够更加详细地学习设计模式。
开放闭合原则
开放闭合原则指出:类或对象和方法应对扩展操作开放, 但对修改操作闭合。
简单地说,当你开发你的软件应用程序,请确保您以通用的方式编写类或模块, 以便每当您感到需要扩展类或对象的行为时, 就不必更改类本身。更确切地说,是类的简单扩展帮助你建立新的行为。
例如, 开放闭合原理原则表现在这样一种情况下: 用户必须通过扩展抽象基类而不是更改抽象类,来实现所需的行为。
开放闭合原则的优点如下:
• 现有类不会更改, 因此回归(regression)的可能性较小
• 它还有助于保持以前代码的向后兼容性
控制反转原则
反转控制原则指出:高级模块应不要依赖低级模块;它们都应该依赖于抽象。细节应该取决于抽象, 而不是相反。
这一原则表明, 任何两个模块不应该在一个严密的方式依赖于对方。事实上, 基本模块和相关模块应该与中间的抽象层分离。
这个原则也表明, 你的类的细节应该代表抽象类。在某些情况下, 原则被反转, 实现细节本身决定抽象, 这应该避免。
控制反转原则的优点如下:
• 模块的紧密耦合并不普遍, 因此系统中没有复杂性/紧致性
• 由于依赖模块之间有一个清晰的抽象层 (由钩子或参数提供), 因此如果很容易以更好的方式处理模块之间的依赖关系
接口隔离原则
接口隔离原则指出:客户端不应被迫依赖于它们不使用的接口。
这个原则讨论了软件开发人员编写他们的接口是个好主意。例如, 它提醒开发人员/架构师开发与功能相关的方法。如果有任何方法与接口无关, 则依赖于接口的类必须不必地实现它。
例如,披萨接口不应该有一个名为增加鸡肉()的函数中。基于披萨接口的蔬菜披萨类不应强制实现此方法。
接口隔离原则的优点如下:
• 它迫使程序员编写瘦接口, 并实现具有特定于接口的方法
• 它通过添加无意的方法来帮助您不填充接口
单一责任原则
单一责任原则指出:一个类应该只有一个变更的理由。
简单地说,当我们开发类的时候, 它应该很好地迎合给定的功能。如果一个类处理两个功能, 把它们分离。这里将功能称为变更的理由。
例如, 类可以进行变更, 因为它所期望的行为不同,但如果一个类被变更有两个原因 (基本上,两个功能的更改),那么这个类就应该被肯定分开了。
单一责任原则的优点如下:
• 每当一个功能发生变化时, 这个特定的类就需要改变,而不是别的
• 此外,如果一个类具有多个功能,依赖类将不得不因为不同的缘由进行需要避免的变更
替代原则
替代原则指出:派生类必须能够完全替换基类。
简单地说,当应用程序开发人员编写派生类时,他们应该扩展基类。这也表明,派生类应该尽可能接近基类,以便派生的类本身应该替换基类, 而不进行任何代码更改。