第8章 依赖倒转原则(DIP)
释义
要依赖于抽象,不要依赖于具体。
抽象不应当依赖于细节,细节应当依赖于抽象。
要针对接口编程,而不要针对实现编程。
针对接口编程的意思是,应当使用Java接口和抽象Java类进行变量的类型声明、参量的类型声明、方法的返还类型声明,以及数据类型的转换等。
建议
以抽象的方式耦合是依赖倒转原则的关键。
在某些情况下,如果一个具体类发生变化的可能性非常小,那么抽象耦合能发挥的好处变十分有限,这时使用具体耦合反而会更好。
第9章 接口隔离原则(ISP)
释义
使用多个专门的接口闭比使用单一的总接口要好。
第10章 合成/聚合复用原则(CARP)
释义
在一个新的对象里面使用已有的对象,使之成为新对象的一部分;新的对象通过向这些对象委派达到复用已有功能的目的。
要尽量使用合成/聚合,尽量不要使用继承。
合成和聚合的区别
聚合用来表示“拥有”关系或者整体与部分的关系;而合成则用来表示一种强得多的“拥有”关系。
在一个合成关系里,部分和整体的生命周期是一样的。一个合成的新的对象完全拥有对其组成部分的支配权,包括它们的创建和湮灭等。使用程序语言的术语来讲,组合而成的新对象对组成部分的内存分配、内存释放有绝对的责任。
第11章 迪米特法则(LoD)
释义
一个对象应当对其他对象有尽可能少的了解。
只与你直接的朋友通信。
不要跟“陌生人”说话。
每一个软件单位对其他的单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位。