woaidongmao

文章均收录自他人博客,但不喜标题前加-[转贴],因其丑陋,见谅!~
随笔 - 1469, 文章 - 0, 评论 - 661, 引用 - 0
数据加载中……

OOP遵照:接口隔离原则--ISP

一、ISP简介(ISP--Interface Segregation Principle):

使用多个专门的接口比使用单一的总接口要好。
一个类对另外一个类的依赖性应当是建立在最小的接口上的。
一个接口代表一个角色,不应当将不同的角色都交给一个接口。没有关系的接口合并在一起,形成一个臃肿的大接口,这是对角色和接口的污染。

 

不应该强迫客户依赖于它们不用的方法。接口属于客户,不属于它所在的类层次结构。这个说得很明白了,再通俗点说,不要强迫客户使用它们不用的方法,如果强迫用户使用它们不使用的方法,那么这些客户就会面临由于这些不使用的方法的改变所带来的改变。

 

二、举例说明:

参考下图的设计,在这个设计里,取款、存款、转帐都使用一个通用界面接口,也就是说,每一个类都被强迫依赖了另两个类的接口方法,那么每个类有可能因为另外两个类的方法(跟自己无关)而被影响。拿取款来说,它根本不关心存款操作转帐操作,可是它却要受到这两个方法的变化的影响。

clip_image001


那么我们该如何解决这个问题呢?参考下图的设计,为每个类都单独设计专门的操作接口,使得它们只依赖于它们关系的方法,这样就不会互相影了!

clip_image002


三、实现方法:
1
、使用委托分离接口
2
、使用多重继承分离接口

 

posted on 2008-12-22 21:36 肥仔 阅读(1993) 评论(2)  编辑 收藏 引用 所属分类: OOP

评论

# re: OOP遵照:接口隔离原则--ISP  回复  更多评论   

这个类图难道不是错的?为什么很多博客都有此文章?误人啊
2010-03-27 09:15 | 姓名

# re: OOP遵照:接口隔离原则--ISP  回复  更多评论   

图例的确有问题
2012-03-20 14:22 | buguge

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理