软件设计阶段解决“怎么做”的问题。
从方法上来说,软件设计分为结构化设计与面向对象设计。
1.结构化设计
SD方法的基本思想是将软件设计成由相对独立且具有单一功能的模块组成的结构,分为详细设计和概要设计两个阶段。概要设计又称为总体设计。
在SD中,需要遵循一个基本的原则:高内聚,低耦合。
2.面向对象设计
OOD基本思想包括抽象、封装和可扩展性,其中可扩展性主要通过继承和多态来实现。
常用的OOD原则如下。
- 单一职责原则:设计功能单一的类
- 开放封闭原则:对扩展开放劳 对修改封闭
- 李氏(Liskov)替换原则:子类可以替换父类
- 依赖倒置原则:要依赖于抽象?而不是具体实现;针对接口编程,不要针对实现编程
- 接口隔离原则:使用多个专门的接口比使用单一的总接口要好。
- 组合重用原则:要尽量使用组合,而不是继承关系达到重用目的的。
- 油米特(Demeter)原则(最少知识沽则):一个对象应当对其他对象有尽可能少的了解
3.设计模式
设计模式是前任经验的总结,它使人们可以方便复用成功的软件设计。
根据处理范围不同,设计模式可分为
- 类模式
- 对象模式。
根据目的和用途不同,设计模式可分为
- 创建型模式
- 结构型模式
- 行为型模式
创建型模式主要用于创建对象,包括:
- 工厂方法模式
- 抽象工厂模式
- 原型模式
- 单例模式
- 建造者模式等
结构模式主要用于处理类或对象的组合,包括:
- 适配器模式、
- 桥接模式、
- 组合模式
- 装饰模式、
- 外观模式、
- 享元模式
- 代理模式等
行为型模式主要用于描述类或对象的交互以及职责的分配,包括:
- 职责链模式、
- 命令模式、
- 解释器模式、
- 迭代器模式、
- 中介者模式、
- 备忘录模式、
- 观察者模式、
- 状态模式、
- 策略模式、
- 模板方法模式、
- 访问者模式等