作业二:软件设计原则与设计模式
这个作业属于哪个课程 | 班级的链接 |
---|---|
这个作业要求在哪里 | 作业要求的链接 |
这个作业的目标 | 1. 学习一点设计模式 |
设计模式的目的
- 代码重用性(相同功能的代码, 不用多次编写)
- 可读性(编码规范性, 便于其他程序员的阅读和理解)
- 可拓展性(当需要增加新的功能时, 成本低, 称为可维护性)
- 可靠性(当我们增加新的功能后, 对原来的功能没有什么影响)
- 使程序呈现高内聚, 低耦合的特性
1. 七大原则
- 单一职责原则
- 接口隔离原则
- 依赖倒转(倒置)原则
- 里氏替换原则
- 开闭原则
- 迪米特法则
- 合成复用原则
核心思想:
- 找到应用中可能需要变化之处, 把他们独立出来, 不要和那些不需要变化的代码混合在一起(分层)
- 针对接口编程, 而不是针对实现编程
- 为了交互对象之间的松耦合设计而努力
1.1 单一职责原则
对类来说, 即一个类应该只负责一项职责, 如类A负责两个不同的职责: 职责1, 职责2.
当职责1需求变更而改变A时, 可能造成职责2执行错误, 所以需要将类A的粒度分解为A1, A2.
//如何细粒度化
//方案1
将这多个职责分解为多个类, 每个类负责单一职责, 类级别遵守单一职责
class A1{
void a1();
}
class A2{
void a2();
}
//方案2
将这个类抽象为接口, 多个职责抽象为接口方法, 实现类中实现每个接口方法, 这种修改方法没有对原来的类做很大的修改, 在原先的基础上实现了其他职责, 可靠性和可拓展性高, 方法级别遵守单一职责
interface A{
void a1();
void a2();
}
**单一职责职责注意事项和细节: **
- 降低类的复杂度, 一个类只复制一项职责
- 提高类的可读性, 可维护性
- 降低变更引起的风险, 降低对原有业务的侵入
- 单一职责原则是类级别的, 但是当类中方法数量足够少, 我们可用在方法级别保持单一职责原则
1.2 接口隔离原则
客户端不应该依赖他不需要的接口, 即一个类对另一个类的依赖应该建立在最小的接口上
- 类A通过接口Interface1依赖(方法参数需要类B)类B, 类C通过接口interface1依赖类B, 如果接口interface1对于类A和类C来说不是最小接口(即A只需要interface中的哦o1, o2, o3 不需要o4, o5), 那么类B和类D必须来实现他们不需要的方法
- 按隔离原则应该将接口Interface1拆分为独立的几个就扣, 类A和类C分别与他们需要的就扣建立依赖关系, 这就是接口隔离原则
- 将接口拆分为独立的几个接口