设计原则

2023-05-04  本文已影响0人  springerPrivate

面向对象软件设计原则是一组指导面向对象软件设计的经验法则,它们有助于开发人员编写更易于维护和扩展的代码。

单一职责原则(The Single Responsibility Principle)SRP

定义:
一个类应该只有一个引起它变化的原因。

说明:
SRP指导我们如何将类的职责分解,使得每个类都只负责一项职责。
每个类都应该具有清晰、明确的职责,不应该承担过多的职责。如果一个类承担了过多的职责,那么它就会变得复杂、难以维护,而且一旦发生变化,可能会影响到其他的功能模块。
遵守SRP原则可以使得程序更加灵活、易于扩展和维护,同时也可以提高代码的复用性和可读性。在软件设计中,SRP原则应该被视为一个基本的设计原则,尽可能地遵守。

要点:

优点:

缺点:

开放封闭原则(The Open Close Principle)OCP

定义:
软件实体(类、模块、函数等)应该是可以扩展的,但是不可修改。

说明:
OCP指导我们如何设计一个稳定、灵活的软件系统,使得系统可以方便地扩展新功能,同时又不影响原有的功能。
这意味着当需要增加新的功能时,应该通过添加新的代码来实现,而不是通过修改原有的代码来实现。
遵守OCP原则可以使得系统更加稳定、灵活、易于扩展和维护。在软件设计中,OCP原则应该被视为一个重要的设计原则,尽可能地遵守。

要点:

优点:

缺点:

里氏替换原则(The Liskov Substitution Principle)LSP

定义:
子类必须能替换掉他们的基本类型。

说明:
LSP指导着如何定义子类型,以确保程序中使用父类型的地方都可以使用子类型,而不会产生错误或异常。
简单来说,如果对于一个类型T的对象o1,都有类型S的对象o2,使得程序在使用o2的任意地方都可以使用o1,而不会影响程序的正确性,则类型S是类型T的子类型。LSP原则的核心在于“行为的保持”,即子类型必须保证父类型的行为不会被破坏或改变。
遵守LSP原则可以避免程序中出现难以预料的错误或异常,提高程序的稳定性和可靠性。因此,在软件设计中,LSP原则应该被视为一个重要的设计原则,尽可能地遵守。

要点:

优点:

缺点:

依赖倒置原则(The Dependency Inversion Principle)DIP

定义:
抽象不应该依赖于细节。细节应该依赖于抽象。

说明:
DIP指导着如何设计代码,使得代码更加灵活、易于扩展和维护。
设计系统时,应该使用抽象类或接口来描述系统中的对象,而不是使用具体的实现类。
遵守DIP原则可以使得代码更加灵活、易于扩展和维护。在软件设计中,DIP原则应该被视为一个重要的设计原则,尽可能地遵守。

要点:

优点:

缺点:

接口隔离原则(The Interface Segregation Principle)ISP

定义:
不应该强迫客户依赖于他们不用的方法。接口属于客户,不属于他所在的类层次结构。

说明:
ISP指导着如何设计接口,使得接口更加简洁、易于理解和使用。
在设计接口时,应该尽量避免出现冗余或不必要的接口,以减少类之间的依赖关系。
遵守ISP原则可以使得接口更加简洁、易于理解和使用,同时也可以降低类之间的耦合度,提高系统的灵活性和可扩展性。在软件设计中,ISP原则应该被视为一个重要的设计原则,尽可能地遵守。

要点:

优点:

缺点:

最少知识原则(The Least Knowledge Principle)LKP 迪米特法则(Law of Demeter,简称LoD)

定义:
一个对象应该尽可能少地了解其他对象

说明:
LKP原则指导着我们要尽量减少对象之间的相互依赖和交互,以降低系统的耦合度,提高系统的灵活性和可维护性。
在设计对象时,应限制对象之间的交互,使得一个对象只与其直接关联的对象进行通信,而不涉及其他对象的内部细节。
遵循LKP原则,可以降低对象之间的耦合度,提高系统的灵活性和可维护性,同时也能提高系统的可测试性和可扩展性。

要点:

优点:

缺点:

综述:

我们对待设计原则的态度应该是积极的。设计原则是一种指导我们如何设计软件的方法论,通过遵循设计原则,可以使我们的软件更易于维护、扩展和重用,同时也能够提高软件的可靠性、可读性和可测试性。
但在实际项目开发中,过度追求设计原则也有可能会导致过度设计,浪费时间和资源。因此,我们在应用设计原则时应该在实际情况和需求之间寻找平衡点。在实践中,需要根据项目规模、复杂度、团队规模、人员经验、项目需求和可扩展性等因素来决定使用哪些设计原则,以及如何灵活应用这些原则。在设计软件时,应该注重代码质量、可维护性和可扩展性,但不应该让设计原则成为开发的障碍或增加不必要的复杂性。

上一篇 下一篇

猜你喜欢

热点阅读