1.接口隔离原则
角色隔离:广义的接口是一个类型所提供的所有方法的集合,一个接口相当于一个角色,角色拥有不同的作用,接口的划分,也即角色的划分,不同的接口,提供不同类型的功能
服务定制:狭义的接口,则是Java接口,仅将客户端所需要的行为,定义到接口中,减少模块与模块,服务端与客户端的通信
2.合成/聚合复用原则
在新的对象里面,使用一些已有的对象,使之成为新对象的一部份,新对象通过使用原有对象,达到复用的目地
聚合,表示拥有或整体与部份的关系
合成,则表示的是强得多的拥有关系,部份与整体的生命周期是一样的
使用原则,IS—A的情况下使用继承,Has-A的情况下使用复用
3.迪米特法则
最少知识原则,一个对象应该对其它对象尽可能少的了解
狭义的迪米特法则:如果两个类不必直接通信,两个类之间不应发生直接的调用,如果其中一个类需要调用另一个类的某个方法,则应通过学习第三者进行转发这个调用
一个设计得好的模块,可以将所有的实现细节隐藏起来,把供外部调用的API与具体实现分隔开来,让模块与模块之间,只通过API来进行交互,而不用理会模块内部的工作细节
广义的迪米特法则在设计的体现:
优先考虑将一个类设计为不变类
尽量降低一个类的访问权限
谨慎使用Serializable
昼降低成员的访问权限