设计模式七大原则

设计模式七大原则

设计模式背后通常遵循着一些基本原则,这些原则指导着我们如何设计出更加灵活、可维护和可扩展的软件系统。

其中最为人所知的是“SOLID”原则,这五个字母分别代表了面向对象设计和编程的五大核心原则:

1. 单一职责原则(SRP)

  • 概念: 一个类或模块应仅有一个引起它变化的原因。
  • 通俗诠释: 像餐厅分工,厨师专注烹饪,服务员负责服务,各司其职,互不干扰。
  • 作用: 提高代码的可读性和可维护性,便于定位和修复错误。
  • 应用场景: 在设计类或模块时,确保每个部分只负责一个明确的功能,如登录模块只处理登录逻辑,而不涉及用户权限验证。

2. 开放封闭原则(OCP)

  • 概念: 软件实体(类、模块、函数等)应该对扩展开放,对修改关闭。
  • 通俗诠释: 如同建筑的扩建,不拆旧楼加新翼,软件增加新功能也不修改原有代码。
  • 作用: 增强软件的可扩展性,减少因修改造成的潜在错误。
  • 应用场景: 框架设计和插件系统,允许用户通过新增模块或插件来扩展功能,而不是修改框架核心代码。

3. 里氏替换原则(LSP)

  • 概念: 子类应当能够替换其基类而不影响程序的正确性。
  • 通俗诠释: 苹果能代替水果出现在任何需要水果的场合,不会出错。
  • 作用: 保证继承体系的健壮性,减少类型判断和强制类型转换。
  • 应用场景: 在设计继承结构时,确保子类在父类出现的地方可以无缝替换,比如图形编辑器中,各种形状(圆形、方形)都可以作为“形状”被统一处理。

4. 接口隔离原则(ISP)

  • 概念: 客户端不应依赖它不需要的接口。
  • 通俗诠释: 顾客点餐只需看菜单,不必了解厨房的运作细节。
  • 作用: 减少耦合,提高系统的灵活性和可维护性。
  • 应用场景: API设计时,提供细粒度的接口,让调用者只关心它真正需要的功能,避免不必要的复杂性。

5. 依赖倒置原则(DIP)

  • 概念: 依赖于抽象而不是具体实现。
  • 通俗诠释: 考C2驾照可以开所有自动挡的车子(抽象),而不是某一个具体品牌车子(具体),换一辆自动挡车也能开。
  • 作用: 降低模块间的耦合,提升系统的可测试性和可维护性。
  • 应用场景: 框架和应用的解耦,应用程序依赖于框架提供的接口而非具体实现,便于框架升级和替换。

除了SOLID原则外,还有一些其他重要的设计原则,例如:

6. 迪米特法则(LoD)

又称:最少知识原则

  • 概念: 一个对象应当对其他对象有最少的了解。
  • 通俗诠释: 不随意打听别的同事的工作内容,只和与自己工作直接相关的同事交流。
  • 作用: 减少模块间的耦合,降低系统的复杂度。
  • 应用场景: 在类的设计中,限制对象间的直接交互,通过中间人传递信息,如事件驱动编程中的事件发布/订阅模式。

7. 合成复用原则(COI)

  • 概念: 尽量使用对象组合而不是类继承来达到复用。
  • 通俗诠释: 像乐高积木一样,通过组合不同基础模块创造多样形态,而不是不断创造新形状积木。
  • 作用: 提高系统的灵活性和可扩展性,降低继承层次的复杂度。
  • 应用场景: 在软件架构中,通过组合多个对象来实现复杂功能。比如游戏中的角色可以通过装备不同的武器和防具来改变属性,而不是为每种可能的角色创建子类。

这七大原则是面向对象设计和编程的基石,遵循这些原则可以帮助开发者设计出更易于维护、扩展和理解的软件系统。

版权声明:本文《设计模式七大原则》是由陶其原创撰写,首发于陶其的个人博客
转载声明:如需转载本文,请务必在转载处保留原文链接:https://www.tqazy.com/?p=639,并明确注明文章来源。
暂无评论

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇