设计模式-原则概述

举报
yd_294916736 发表于 2026/11/02 23:17:09 2026/11/02
【摘要】 设计模式-原则概述

原则概述

单一职责原则简述

单一职责原则(Single Responsibility Principle, SRP)是面向对象设计中的一个重要原则,它要求一个类应该只有一个原因引起变化,即一个类应该只有一个职责。遵循这一原则可以提高代码的可读性、可维护性和可扩展性。

原则说明

  • 每个类应该只负责一个功能或职责。
  • 如果一个类承担了多个职责,当其中一个职责发生变化时,可能会影响到其他职责,从而导致代码的脆弱性。

优点

  • 提高可维护性:每个类的功能单一,修改时影响范围小。
  • 增强可读性:类的职责清晰,便于理解。
  • 便于测试:单一职责的类更容易进行单元测试。

缺点

  • 类的数量增加:可能导致类的数量增多,增加系统的复杂性。
  • 初期设计复杂:在设计时需要考虑职责划分,可能增加初期的设计成本。

开放-封闭原则简述

开放-封闭原则(Open/Closed Principle, OCP)是面向对象设计中的一个重要原则,旨在提高软件的可扩展性和可维护性。该原则规定:软件实体(类、模块、函数等)应该对扩展开放,对修改封闭。这意味着在不修改现有代码的情况下,可以通过添加新代码来扩展系统的功能。

原则说明

  • 对扩展开放:可以通过新类或新模块来扩展功能。
  • 对修改封闭:现有的代码不应该被修改,以避免引入新的错误。

优点

  • 提高系统的灵活性:可以轻松添加新功能而不影响现有功能。
  • 降低系统的风险:减少对现有代码的修改,降低引入错误的可能性。
  • 增强可维护性:代码结构更清晰,便于理解和维护。

缺点

  • 设计复杂性增加:需要在初期设计时考虑扩展性,可能增加设计的复杂性。
  • 类的数量增加:为了遵循该原则,可能需要创建更多的类,导致系统复杂性提高。

里氏替换原则简述

里氏替换原则(Liskov Substitution Principle, LSP)是面向对象设计中的一个重要原则,旨在确保子类可以替换父类而不影响程序的正确性。换句话说,如果一个程序使用父类的对象,那么它也应该能够使用任何子类的对象,而不需要知道它们的具体类型。

原则说明

  • 子类对象应该能够替换父类对象。
  • 子类不应破坏父类的功能或合同。

优点

  • 提高代码的可重用性:遵循该原则的代码更容易重用,因为可以通过替换不同的子类来实现多态。
  • 增强代码的可维护性:代码结构更清晰,便于理解和维护。

缺点

  • 设计复杂性增加:需要在设计时考虑子类与父类之间的关系,可能增加设计的复杂性。
  • 可能导致继承层次过深:过多的继承可能导致系统复杂性增加。

依赖倒转原则简述

依赖倒转原则(Dependency Inversion Principle, DIP)是面向对象设计中的一个重要原则,它强调高层模块不应该依赖低层模块,而是应该依赖于抽象。抽象不应该依赖于细节,细节应该依赖于抽象。换句话说,程序中的依赖关系应该通过接口或抽象类来实现,而不是通过具体实现类。

原则说明

  • 高层模块不应依赖于低层模块,二者都应依赖于抽象。
  • 抽象不应依赖于细节,细节应依赖于抽象。

优点

  • 提高系统的灵活性和可扩展性:可以轻松替换具体实现而不影响高层模块。
  • 降低模块之间的耦合度:通过接口或抽象类降低模块之间的依赖关系,提高代码的可维护性。

缺点

  • 设计复杂性增加:需要在设计时考虑抽象和接口的使用,可能增加设计的复杂性。
  • 初期开发成本增加:为了遵循该原则,可能需要额外的接口和抽象类,增加初期开发的工作量。

迪米特法则简述

迪米特法则(Law of Demeter),也称为最少知识原则,是一种设计原则,旨在减少系统中各个模块之间的耦合。该法则规定一个对象应该对其他对象有尽可能少的了解。具体来说,一个对象只应该与直接的朋友进行交互,而不应该了解其他对象的内部细节。

主要原则

  1. 一个对象应该只与其直接的朋友交互。
  2. 不应该与陌生人通信。
  3. 避免通过链式调用来访问对象的属性。

优点

  • 降低耦合:通过减少对象之间的依赖关系,降低了系统的耦合度。
  • 增强可维护性:系统的模块之间的依赖关系减少后,代码的可维护性和可读性提高。

缺点

  • 可能导致过度封装:在某些情况下,过度遵循迪米特法则可能导致代码的复杂性增加。
  • 影响性能:在某些场景下,过多的对象交互可能会影响性能。

合成/聚合复用原则简述

合成/聚合复用原则(Composite/Aggregate Reuse Principle,CARP)是面向对象设计中的一项重要原则,旨在提高代码的复用性。该原则强调在设计类时,应该优先使用合成(Composition)或聚合(Aggregation)关系,而不是继承(Inheritance)关系,以实现更灵活和可维护的系统。

角色

  • 合成(Composition):一种强关系,表示整体与部分之间的关系,部分不能独立于整体存在。
  • 聚合(Aggregation):一种弱关系,表示整体与部分之间的关系,部分可以独立于整体存在。

优点

  • 灵活性:通过合成或聚合,可以在运行时动态地改变组成部分,增强了系统的灵活性。
  • 可重用性:不同的类可以共享相同的组件,减少了代码重复,提高了复用性。
  • 降低耦合:合成和聚合关系通常比继承关系耦合度低,便于维护和扩展。

缺点

  • 设计复杂性:使用合成或聚合可能会增加设计的复杂性,特别是在需要管理多个组件时。
  • 性能开销:在某些情况下,合成和聚合可能引入额外的性能开销。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。