软件设计¶
这是华为可信认证的一个科目,本版块将重点学习软件设计的知识,包括设计原则和设计模式;大部分语料由AI生成,我负责整理、发布
软件设计是在需求与实现之间建立结构的过程:把系统拆成合适的模块,明确模块之间的依赖与职责,并让结构在需求变化时仍然可控。
设计原则¶
设计原则是经验性的指导方针,不是硬性规则。它们共同的目标是降低耦合、提高内聚、让变化的影响范围可控。最基本的原则是 SOLID 原则:
| 原则 | 英文 | 核心思想 | 违反时的典型症状 |
|---|---|---|---|
| 单一职责原则 | SRP (Single Responsibility) | 一个模块应围绕一个主要职责进行组织,即只有一个引起它变化的原因 | 一个类里混着业务逻辑、持久化、格式化,改动一处牵连多处 |
| 开闭原则 | OCP (Open/Closed) | 尽量通过扩展来增加功能,而不是反复修改稳定的代码 | 每加一种类型就要改一遍 switch / if-else |
| 里氏替换原则 | LSP (Liskov Substitution) | 子类型应能在约定的使用场景中替代父类型,且不破坏调用方的预期 | 子类抛出不支持的异常、静默改变父类语义 |
| 接口隔离原则 | ISP (Interface Segregation) | 不要强迫调用方依赖不需要的接口 | 一个庞大的接口,实现类被迫写一堆空方法 |
| 依赖倒置原则 | DIP (Dependency Inversion) | 高层策略不应直接依赖低层实现细节,二者都应依赖抽象 | 业务层直接 new 具体的数据访问类,难以替换和测试 |
设计模式¶
设计模式是可复用的、针对特定上下文的解决方案模板。经典的 GoF(Gang of Four)设计模式共 23 种,按目的分为三大类。
四人帮是哪四人
这里的四个人是:
- Erich Gamma
- Richard Helm
- Ralph Johnson
- John Vlissides
1994 年,他们共同出版了一本影响深远的书:《Design Patterns: Elements of Reusable Object-Oriented Software》
| 类别 | 关注点 | 包含模式 |
|---|---|---|
| 创建型 | 对象如何被创建,解耦"使用"与"实例化" | 单例、工厂方法、抽象工厂、建造者、原型 |
| 结构型 | 类与对象如何组合成更大的结构 | 适配器、桥接、组合、装饰器、外观、享元、代理 |
| 行为型 | 对象之间如何协作、如何分配职责 | 责任链、命令、解释器、迭代器、中介者、备忘录、观察者、状态、策略、模板方法、访问者 |
最后更新: 2026-10-27 01:43:13
创建日期: 2026-10-23 01:34:52
创建日期: 2026-10-23 01:34:52
广告
人要恰饭的嘛🤑🤑