Java进阶学习笔记(九)
1.DOME的新媒体类型:
1.1 增加新的媒体类型:
可扩展性:函数、类,你的代码不需要修改就可以完全去适应新的内容;
可维护性:经过修改了再去适应;
1.2 更深的继承:

2.城堡游戏:
2.1 游戏设计:


2.2 消除代码复制:
代码复制是不良设计的一种表现,不利于将来的需要----维护;
2.3 增加可扩展性:
可以运行的代码!=良好的代码;
对代码做维护的时候最能看出代码的质量;
如果想要增加一个方向,如down或up
3.封装:(代码的维护成为好坏的评价标准)
3.1 用封装来降低耦合:
Room类和Game类都有;
尤其是Game类中大量使用了Room类的成员变量;大量的代码和出口相关;
类和类之间的关系成为耦合;
耦合越低越好,保持距离是形成良好代码的关键;
4. 可扩展性:
4.1 用接口来实现聚合:
给Room类实现的新方法,把方向的细节彻底隐藏在Room类内部了;
今后方向如何实现就和外部无关了;
4.2 用容器来实现灵活性:
Room的方向是用成员变量表示的,增加或减少方向就要改变代码;
如果用Hash表来表示方向,那么方向就不是“硬编码”的了;

5.框架加数据:
5.1 以框架+数据来提高可扩展性:
命令的解析是否可以脱离if-else;
定义一个Handler来处理命令;
用Hash表来保存命令和Handler之间的关系;

6.抽象:
6.1 抽象函数/抽象类
抽象函数----表达概念而无法实现具体代码的函数;
抽象类-----表达概念而无法构造出实体的类;
带有abstract修饰符的函数;
有抽象函数的类一定是抽象类;
抽象类不能制造对象,但是可以定义变量,任何继承了抽象类的非抽象类的对象可以付给这个变量;

6.2 实现抽象函数:
继承自抽象类的子类必须覆盖父类中的抽象函数,否则自己成为抽象类;//实现

6.3 两种抽象:
与具体相对;
表示一直概念而非实体;
与细节相对;
表示一定程度上忽略细节而着眼大局;
