JAVA的设计原则
1. 接口隔离原则(ISP:Interface Segregation Principle)
定义:使用多个专门的比使用单一的总接口要好。也可以说:建立单一接口,不要建立臃肿庞大的接口。
ISP的两种定义:
◇ “Clients should not be forced to depend upon interfaces that they don't use”
客户端不应该依赖它不需用的接口。
◇ “The dependency of one class to another one should depend on the smallest possible interface”
一个类对另外一个类的依赖性应当是建立在最小的接口上的。(从客户端)
接口与角色:将接口理解为一个类所提供的所有方法的特征集合。如此,接口的划分,就带来了类型的划分。所以一个接口应该只表示一种角色,而不是担任多个角色。
接口污染(Interface Contamination):所谓接口污染就是为接口添加了不必要的职责。接口污染会带来维护和重用方面的问题,最常见的问题是我们为了重用被污染的接口,被迫实现并维护不必要的方法。因此,我们必须分离客户程序,分离客户程序就是分离接口。
分离接口的实现方法:
分离接口的方式一般分为两种:
1) 使用委托分离接口。(Separation through Delegation)
就把请求委托给别的接口的实现类来完成需要的职责,就是适配器模式(Adapter)。
2) 使用多重继承分离接口。(Separation through Multiple Inheritance。)
该方法通过实现多个接口来完成需要的职责。
两种方式各有优缺点,通常我们应该先考虑后一个方案,如果涉及到类型转换时则选择前一个方案。