第六周 设计原则
代码复制
消除代码复制的两个基本手段,就是使用方法和父类(将两个子类的相同属性和行为都放在父类里)。
耦合与聚合
对于类的设计来说,有两个核心术语:耦合和聚合。
耦合这个词指的是类和类之间的联系。之前的章节中提到过,程序设计的目标是一系列通过定义明确的接口通信来协同工作的类。
耦合度反映了这些类联系的紧密度。我们努力要获得低的耦合度,
或者叫作松耦合(loose coupling)。
聚合与程序中一个单独的单元所承担的任务的数量和种类相对应有关,它是针对类或方法这样大小的程序单元而言的理想情况下,
一个代码单元应该负责一个聚合的任务(也就是说,一个任务可以被看作是一个逻辑单元)。一个方法应该实现一个逻辑操作,而一个类应该代表一定类型的实体。聚合理论背后的要点是重用:
如果一个方法或类是只负责一件定义明确的事情,那么就很有可能在 另外不同的上下文环境中使用。
遵循这个理论的一个额外的好处是,当程序某部分的代码需要 改变时,在某个代码单元中很可能会找到所有需要改变的相关代码段。
增加可扩展性
用封装来降低耦合
- Room类和Game类都有大量的代码和出口相关
- 尤其是Game类中大量使用了Room类的成员变量
- 类和类之间的关系称作耦合
- 耦合越低越好, 保持距离是形成良好代码的关键
可扩展性的意思就是
代码的某些部分不需要经过修改就能适应将来可能的变化。 (减少硬编码)
以框架+数据来提高可扩展性
- 命令的解析是否可以脱离if-else
- 定义一个Handler来处理命令
- 用Hash表来保存命令和Handler之间的关系
最后, 我在Github上贴出了前后两个版本的castle_game的实现代码示例:
https://github.com/menglanyingfei/MOOC_Wengkai_Java/tree/master/code/castle_game
可以经过仔细对比, 第二个版本develop的代码完全符合这些设计原则!
个人博客:(一个一直在坚持认真学习Java的大二学生)
博客地址
现在时间:
2017/07/16
23:05:00