一、开放封闭原则
开放封闭原则规定,类或对象及其方法对于扩展来说,应该是开放的;但是对于修改来说,应该是封闭的。
这意味着当开发软件应用的时候,一定要确保以通用的方式来编写类或模块,以便每当需要扩展类或对象行为的时候不必修改类本身。相反,类的简单扩展将有助于建立新的行为。
也就是说为了实现所需行为,用户必须通过扩展抽象基类来创建类的实现,而不是通过修改抽象类。
优点:
现有的类不会被修改,降低现有应用出错的可能性。
它有助于保持以前代码的向后兼容性。
二、控制反转原则
控制反转原则是指,高层级的模块不应该依赖与底层级的模块,他们应该都依赖于抽象。细节应该依赖于抽象,而不是抽象依赖于细节。
该原则建议任何两个模块都不应以紧密方式相互依赖。事实上,基本模块和从属模块应当在它们之间提供一个抽象层来耦合。这个原则还建议,类的细节应该描绘抽象。在某些情况下,这种观念会反转,也就是实现细节本身决定了抽象,这种情况应该避免的
优点:
消弱了模块间的紧耦合,因此消除了系统中的复杂性
由于在以来模块之间有一个明确的抽象层,因此便于通过更好的方式处理模块之间的依赖关系
三、接口隔离原则
接口隔离原则规定,客户端不应该依赖于它们不需要使用的接口。
接口隔离原则的意思就是,软件开发人员应该仔细的处理接口。他提醒开发人员开发的方法要与特定的功能紧密相关;如果存在与接口无关的方法,那么依赖于该接口的类就必须实现它,实际上这是毫无必要的。
优点:
它强制开发人员编写”瘦身型“接口,并使用方法与接口紧密相关。
防止向接口中随意添加方法。
四、单一职责原则
单一职责的含义是:类的职责单一,引起类变化的原因单一
当我们开发类时,他应该为特定的功能服务。如果一个类实现了两个功能,那么最好是把他们分开,也就是说功能才是改变的理由。一个类可以为所需行为的变化而进行修改,但是一个类由于两个因素(基本上是两个功能的改变)而改变,那么该类就应该进行相应的分割。
优点:
每当一个功能发生改变时,除了特定的类需要改变外,其他的类无需变动。
此外,如果一个类有多种功能,那么依赖它的类必定会由于多种原因而经历多次修改,这是应该避免的。
五、替换原则
替换原则规定,派生类必须能够完全取代基类。
当我们编写派生类时,该原则的含义就是我们应该扩展基类。它还建议派生类尽可能对基类封闭,以至于派生类本身可以替换基类,而无需修改任何代码