看书看不下去,索性就把这段时间以来的学习笔记放一点上来。这里的全部都是理论上的东西,具体的实践近期是不大可能会有的,诶,理论是有点乏味,可还是要学。就像数学一样的。
TDD和模式的笔记,TDD的那本书看完了,不过没有深刻地看,等到暑假再说咯。模式现在还在看,这书太厚啦,一章章地看下来累得死一头牛。没办法,坚持,就是胜利。
数值对象的一个要求就是一旦它的实例变量值在构造方法中被指定,那么以后就再也不允许改变,所以数值对象的所有操作都必须返回一个新的对象,而且必须实现 equals() 和 hashCode() 方法。
当需要显式地判定是哪一种类型才能下一步工作时,都要使用多态来代替条件判断语句。这也是一条重构原则。
开闭原则 Open-Closed Principle OCP
Software entities should be open for extension, but closed for modification.
软件实体应当对扩展开放,对修改关闭。
这里应该是这样的,如果扩展一个软件的功能,那么不应该改变既有代码,而是通过增加一些新的内容来达到目的。
里氏代换原则
任何基类可以出现的地方,子类一定可以出现。
子类源于基类,“青出于蓝而胜于蓝”。这个,我能这样解释吗???自己都感觉好像有问题似的。
依赖倒转原则 (一开始我还以为是翻转控制呢)
要依赖于抽象,不要依赖于实现。
Abstractions should not depend upon details. Details should depend upon
abstractions. Program to an interface, not an implemention.
这个就是那个“针对接口编程”咯。
合成/聚合 复用原则
尽量使用合成/聚合,而不是继承关系来达到复用的目换。
继承是一种绑定,在 JAVA 里,只允许单继承,能够不继承的就一定不用继承来达到其它目的。
迪米特法则
一个软件实体应当与尽可能少的其它实体发生相互作用。
接口隔离原则
为客户端提供尽可能小的单独的接口,而不要提供大的总接口
迪米特法则与接口隔离原则是一个意思吧??
接口
JAVA 接口:一种 JAVA 语言中存在的结构,有特定的语法和结构。
普通 接口:一个类所具有的方法的特征集合,一种逻辑上的抽象。
一个方法的特征仅包括方法的名字,参数的数目和类型,而不包括方法的返回类型,参数的名字以及所抛出的异常。
?今天写的一个程序,子类继承了一抽象父类,一个抽象方法在父类中没有指出抛出异常,而我在子类中写了 throws 异常,结果没有通过编译。??
在一个继承关系形成的等级结构里面,树叶节点均应当是具体类,而树枝结点均应当是抽象类/JAVA接口。也就是说不要去继承一个具体类。
抽象类应当拥有尽可能多的代码,同时拥有尽可能少的数据。
针对接口编程,针对抽象编程。