网易云课堂Java进阶学习笔记系列02 -- 第6周 设计原则
来源:互联网 发布:满洲国 知乎 编辑:程序博客网 时间:2024/06/07 20:09
第六周 设计原则
代码复制
消除代码复制的两个基本手段,就是使用方法和父类(将两个子类的相同属性和行为都放在父类里)。
耦合与聚合
对于类的设计来说,有两个核心术语:耦合和聚合。
耦合这个词指的是类和类之间的联系。之前的章节中提到过,程序设计的目标是一系列通过定义明确的接口通信来协同工作的类。
耦合度反映了这些类联系的紧密度。我们努力要获得低的耦合度,
或者叫作松耦合(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
阅读全文
1 0
- 网易云课堂Java进阶学习笔记系列02 -- 第6周 设计原则
- 网易云课堂Java进阶学习笔记系列01 -- 第3周 对象容器
- 网易云课堂Java进阶学习笔记系列03 -- 第7周 抽象与接口
- 网易云课堂Java进阶学习笔记系列04 -- 第8周 控制反转与MVC模式
- 【网易云课堂】Java语言程序设计进阶----第一周编程作业
- 网易云课堂java进阶 编程题
- 网易云课堂java进阶 时间显示
- 网易云课堂-Java语言程序设计进阶-第一次测试答案
- 网易云课堂-java语言程序设计进阶作业2
- 【网易云课堂】Java语言程序设计进阶第一次作业总结
- 网易云课堂JAVA进阶程序设计题一
- 网易云课堂JAVA进阶编程题3
- 网易云课堂程序设计入门--C语言第一周 简单的计算程序学习笔记
- 网易云课堂程序设计入门—C语言第四周 循环控制学习笔记
- android 网易云课堂第二周笔记
- Android 网易云课堂第一周笔记16/5/10
- 网易云课堂-JAVA-第三周
- 网易云课堂-JAVA-第三周
- 链表(1)
- webpack3最新版本配置研究(三)多入口,html-webpack-plugin, extract-text-webpack-plugin
- Kotlin for Android(二)Kotlin基础语法
- python输出以及常用格式符介绍(含笔记)
- .Net中的加密解密
- 网易云课堂Java进阶学习笔记系列02 -- 第6周 设计原则
- 鼠标右键菜单管理,自己就是右键管家,右键菜单清理
- Caffe中mnist例子(一)自定义输入层
- 用指针将英文字符串倒序排列。
- webService的小例子
- 页面的form表单上传文件
- 【分布式存储项目】(1)MySQL数据库安装以及分布式文件上传
- PHP中错误提示的关闭
- 如何设计一个秒杀系统