面向对象设计原则——接口隔离原则(ISP)
tags:设计模式
ISP–No Client should beforced on methods it does not ture.
原则简介
接口隔离原则要求客户程序无需被迫依赖于它用不到的方法.
接口隔离原则与前面的单一职责原则是相辅相成的,如果每个接口只定义”单一职责”,一般不容易出现Fat interface,而且冗余较少.但单一职责原则并不保证客户程序只知道必要的信息,甚至在有些情况下接口隔离原则与单一职责原则会出现一定的冲突,设计时我们要根据用户界面,性能等因素决策.
解释举例
例如,对于一个技术支持服务台应用而言,人员信息需要知道一些姓名,email等基本信息;但对于一个人力资源系统而言,,人员信息就会很多了.尽管按照单一职责原则人力资源系统中的person接口可以分解为多个接口,但即便这样一般也会比Service Desk多.
所以,贯彻接口隔离原则不是简单地说多余或者不多余,衡量的标准是有前提的.从设计角度看,它要依据业务需求来衡量到底时候多余,确保每个领域背景下贯彻接口隔离原则.实际项目中,很多类型也存在类似的问题,因此,我们可以将它们划分到不同的Java package中
依据业务领域分割后的接口隔离原则:
package common
class interface Person{}
package servicedesk
class interface Person extends Person{
void sendEmail();
void sendSMS();
set..
get..
}
package hr
class interface Person extends Person{
set..
get..
}