设计模式之禅-接口隔离原则

个人blog 此篇博文地址:http://www.sanyinchenblog.com/?p=174

接口隔离原则:

demo: https://github.com/sanyinchen/UMLDemo 接口的两种类型: (1)实例接口 (2)类接口,使用Interface定义的接口 隔离: (1)客户端不应该依赖它不需要的接口 (2)类间的依赖关系应该建立在最小的接口上 场景描述:你一日在大街上闲着无聊,在大街上喊了一句美女,结果好多女生都回过头注视你。 我们现在给美女下一个定义:
(1)好看的容貌 (2)好的身材 (3)好的气质 但是现在问题来了,只有全部符合这三条的才是美女吗,比如一个女生有很好的气质,但是相貌长相一般,但是她仍然是一个美女,我们把她称之为气: 


public class Client {

public static void main(String[] args) {

// TODO Auto-generated method stub

IGoodBodyGril bodyGril = new IGoodBodyGril() {

@Override

public void niceFigure() {

// TODO Auto-generated method stub

System.out.println("好的身材!");

}

@Override

public void goodLooking() {

// TODO Auto-generated method stub

System.out.println("好的容貌!");

}

};

IGreatTemperamentGril greatTemperamentGril = new IGreatTemperamentGril() {

@Override

public void greatTemperament() {

// TODO Auto-generated method stub

System.out.println("好的气质!");

}

};

Search search = new Search(greatTemperamentGril);

search.show();

Search2 search2 = new Search2(bodyGril);

search2.show();

}

}

以上就是把一个臃肿的接口拆分成两个,让AbstractSearch有两个更为针对性的接口(这一点看起来有点像单一职责,但是范围感觉要比单一职责大的多)。 接口隔离原则的约束规范: (1)接口要尽量小(依据接口隔离原则拆分接口首先必须满足单一职责原则) (2)接口要高内聚(书中解释什么是高内聚举了个很有意思的例子:有一天你告诉你的下属去把奥巴马桌子上XXX文件拿过来,过了几个月,你下属还真把这份文件给你拿过来了。这种不讲任何条件立即执行完成任务的表现就是高内聚的表现。具体到隔离原则就是要求在接口中尽量少的公布public方法,换句话说就是尽量减少接口的数量,好吧,又回到了第一条)
(3)定制服务(只提供访问者需要的方法) (4)接口的设计是有限度的(接口设计的越小,那么系统就越灵活,但相应的来说,系统就变的复杂,所以这个限度要依据项目而定) 接口隔离设计原则: (1)一个接口只服务于一个子模块或者业务逻辑 (2)通过业务逻辑去压缩接口中的public方法 (3)已经被污染的接口尽量去修改,若变更风险大则使用适配器模式进行转化 (4)了解环境,拒绝盲从

时间: 2024-10-06 13:04:24

设计模式之禅-接口隔离原则的相关文章

设计模式之禅--六大设计原则之接口隔离原则

设计模式就是让我们更方便的解决问题. 这里分享一个故事.我有一个朋友,嗯没错就是一个朋友,参加一个软件比赛,一个同学写服务器上的代码,三天两头更新,丝毫不考虑写客户端的人的感受,简直不能再牛.如果Java的更新有这么一次,没有考虑在不影响以前代码的基础上做修改,得有多少程序员吐血身亡. 接口隔离原则的定义: 建立单一接口,不要建立臃肿放大的接口.接口尽量细化,同时接口中的方法尽量少. 这不是单一职责原则,单一职责要求的是类和接口的职责单一,注重的是职责,这是业务逻辑上的划分,而借口隔离原则要求接

设计模式之禅之六大设计原则-接口隔离原则

接口隔离原则一:什么是接口?● 实例接口(Object Interface)        ---->Person zhangSan=new Person()产生了一个实例,这个实例要遵从的标准就是Person这个类,Person类就是zhangSan的接口● 类接口(Class Interface)        ---->Java中经常使用的interface关键字定义的接口. 二:那什么是隔离呢?它有两种定义:      ---->事物的定义一般都比较难理解,晦涩难懂是正常的.我们

设计模式六大原则之接口隔离原则

一.概念: 接口隔离原则有两种定义: 1.Clients should not be forced to depend upon interfaces that they don't use. (客户端不应该强行依赖它不需要的接口) 2.The dependency of one class to another one should depend on the smallest possible interface. (类间的依赖关系应该建立在最小的接口上) 客户端不应该依赖它不需要的接口.接

设计模式六大原则(4)--接口隔离原则

定义: 客户端不应该依赖它不需要的接口:类之间的依赖关系应建立在最小的接口之上.接口隔离原则英文全称为Interface Segregation Principle ,简称为ISP. 个人理解: 通俗的来说,接口不能臃肿庞大,而使根据具体需要尽量的细化.接口中的方法也要尽可能的少.接口是设计对外的一种契约,通过分散定义多个接口可以预防将来变更的扩散,使得真个系统变得更加稳定和更具有可维护性. 问题由来: 类A通过接口I依赖类B,类C通过接口I依赖类D,如果接口I对于类A和类C不是最小的接口,那么

设计模式六大原则(4):接口隔离原则

接口隔离原则 定义:客户端不应该依赖它不需要的接口:一个类对另一个类的依赖应该建立在最小的接口上. 问题由来:类A通过接口I依赖类B,类C通过接口I依赖类D,如果接口I对于类A和类B来说不是最小接口,则类B和类D必须去实现他们不需要的方法. 解决方案:将臃肿的接口I拆分为独立的几个接口,类A和类C分别与他们需要的接口建立依赖关系.也就是采用接口隔离原则. 接口隔离原则(Interface  Segregation Principle, ISP):使用多个专门的接口,而不使用单一的总接口,即客户端

设计模式六大原则(4):接口隔离原则(Interface Segregation Principle)

接口隔离原则: 使用多个专门的接口比使用单一的总接口要好. 一个类对另外一个类的依赖性应当是建立在最小的接口上的. 一个接口代表一个角色,不应当将不同的角色都交给一个接口.没有关系的接口合并在一起,形成一个臃肿的大接口,这是对角色和接口的污染. "不应该强迫客户依赖于它们不用的方法.接口属于客户,不属于它所在的类层次结构."这个说得很明白了,再通俗点说,不要强迫客户使用它们不用的方法,如果强迫用户使用它们不使用的方法,那么这些客户就会面临由于这些不使用的方法的改变所带来的改变. 定义:

设计模式六大原则: 辅导班的因材施教 -- 接口隔离原则

我的女朋友小肉是一名光荣的辅导班老师,说来惭愧,我上初中那会儿最讨厌辅导班老师了,每天上学都这么累了,晚上还得去见辅导班老师,神烦,奈何目前的教育机制下,很多家长认为辅导班是提高成绩比较靠谱的方式,导致这个行业市场很大. 小肉教三个水平不同的小班,那天看她在准备讲义和试题,同一章内容需要做三份,其中很多内容都是重复的,自诩设计模式略懂一二的我跟她说: 你这个讲义跟我敲代码很像,相似的内容这么多,直接复制粘贴容易出问题啊,还不如把公共的部分提一个接口,然后让三种水平的讲义都实现这个接口 比如这样:

Java 设计模式(十三) 接口隔离原则(ISP)

接口隔离原则(Interface Segregation Principle) ISP基本概念 接口 实例接口(Object Interface):一个类的实例对象是对一个类型的事物的描述,这时一种接口. 类接口(Class Interface):Java中interface关键定义的接口,也是我们通常理解的狭义的接口 ISP定义 客户端(模块)不应该依赖它不需要的接口(接口的纯粹性) 一个模块应该依赖它需要的接口,需要什么接口就提供什么接口,把不需要的接口剔除掉,那就需要对接口进行细化,保证接

小菜学设计模式——接口隔离原则

背景 本文标题为什么叫小菜学习设计模式,原因是本文内容主要是学习<大话设计模式>时的笔记摘要部分,当然,并不是记录书中小菜的学习过程,这个完全没有意义,而是指本人学习设计模式的成长之旅. 真诚的希望自己能够从一名小菜成长为一名大鸟! 编写的程序应该满足: 1)可维护 2)可扩展 3)可复用 4)够灵活 废话少说,言归正传,设计模式原则之:接口隔离原则 书面理解 接口隔离原则:使用多个小的专门的接口,而不要使用一个大的总接口. 接口应该是内聚的,应该避免"胖"接口.一个类对另