OOP24-面向对象程序设计总结

单一职责

对象应当具有单一职责.对象不是对应现实中的一个事物, 而是这个事物的某个方面, 或者说对象的角色. 例如一个具体的人, 用对象是难以表达的, 因为需要太多的方面(变量)用于描述这个人. 实际中, 人是在具体的场景出现的, 一个人的某一方面/角色作为一个对象. 例如: 学生, 教师. 学生作为一个角色是可以作为对象的. 因为具体的角色具有有限的关注的方面(变量). 如果一个角色承担多种职责, 那么这个角色应当视为几个基本职责对象的组合. 对象被设计为单一职责的关键优势在于只有一个方面的功能职责影响对象的变化. 多个职责耦合在一起, 形成的程序难以分析, 理解和修改.
单一职责的关键是隔离各种引起变化的不同原因之间的耦合, 让一种变化仅影响系统的一个类或方面.

接口隔离

表达对象之间的组成关系, 方法的参数和返回值, 尽可能使用接口作为成员变量/参数/返回值的类型. 采用接口隔离的优势在于对象之间不依赖于其他的具体的对象的类. 也就是类的修改如果没有改变类实现的接口, 那么这个类的修改不会导致其它类的修改.
接口隔离的关键是隔离具体类可能发生的变化. 相互之间都依赖于接口, 那么各个具体类之间就不会耦合在一起, 各个具体类就可以相互替换.

依赖注入

对象的创建统一管理. 对象之间的关系统一管理. 活动的流程(对象之间的时间顺序关系)统一管理.
通过接口相互隔离的, 具有单一职责的类之间, 通过依赖注入, 联系在一起, 形成系统.

面向方面

不同的方面单独处理. 用户的访问控制, 操作日志, 异常处理等都应当并且可以单独处理. 相同方面的事情是相互耦合的, 把不同方面耦合在一起会导致程序修改的范围较大. 如果把不同的方面分开, 那么程序的最主要的方面可以变得很清晰, 易于程序的理解, 分析和扩充.

测试驱动和重构

测试驱动开发. 先写测试用例, 然后构思功能实现方式, 实现并通过测试. 如果现有系统难以进行变更/扩展功能以通过测试, 那么就重构现有系统, 然后再实现新功能. 重构指修改程序的结构, 但是不改变程序的功能. 通常修改程序结构的目的是为了更好的适应扩展新功能.

持续集成

软件应当在每次增加/修改功能后, 进行(自动化的)集成测试, 确保局部的修改造没有成系统其它部分的问题.
To Be Continued…

猜你喜欢

转载自blog.csdn.net/dlutcat/article/details/80230167