查看“接口隔离原则”的源代码
←
接口隔离原则
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看和复制此页面的源代码。
=== 接口隔离原则的定义 === 在讲接口隔离原则之前,先明确一下我们的主角——接口。 接口分为两种: * 实例接口(Object Interface),在 Java 中声明一个类,然后用 new 关键字产生一个实例,它是对一个类型的事物的描述,这是一种接口。比如你定义 Person 这个类,然后使用 Person zhangSan=new Person() 产生了一个实例,这个实例要遵从的标准就是 Person 这个类,Person 类就是 zhangSan 的接口。疑惑?看不懂?不要紧,那是因为让 Java 语言浸染的时间太长了,只要知道从这个角度来看,Java 中的类也是一种接口。 * 类接口(Class Interface),Java 中经常使用的 interface 关键字定义的接口。 主角已经定义清楚了,那什么是隔离呢?它有两种定义,如下所示: * 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.(类间的依赖关系应该建立在最小的接口上。) 新事物的定义一般都比较难理解,晦涩难懂是正常的。 我们把这两个定义剖析一下,先说第一种定义:“客户端不应该依赖它不需要的接口”,那依赖什么? 依赖它需要的接口,客户端需要什么接口就提供什么接口,把不需要的接口剔除掉,那就需要对接口进行细化,保证其纯洁性; 再看第二种定义:“类间的依赖关系应该建立在最小的接口上”,它要求是最小的接口,也是要去接口细化,接口纯洁,与第一个定义如出一辙,只是一个事物的两种不同描述。 我们可以把这两个定义概括为一句话:建立单一接口,不要建立臃肿庞大的接口。再通俗一点讲:接口尽量细化,同时接口中的方法尽量少。 看到这里大家有可能要疑惑了,这与单一职责原则不是相同的吗? 错,接口隔离原则与单一职责的审视角度是不相同的,单一职责要求的是类和接口职责单一,注重的是职责,这是业务逻辑上的划分,而接口隔离原则要求接口的方法尽量少。 例如一个接口的职责可能包含10个方法,这10个方法都放在一个接口中,并且提供给多个模块访问,各个模块按照规定的权限来访问,在系统外通过文档约束“不使用的方法不要访问”,按照单一职责原则是允许的,按照接口隔离原则是不允许的,因为它要求“尽量使用多个专门的接口”。 专门的接口指什么?就是指提供给每个模块的都应该是单一接口,提供给几个模块就应该有几个接口,而不是建立一个庞大的臃肿的接口,容纳所有的客户端访问。 === 美女何其多,观点各不同 === 我们举例来说明接口隔离原则到底对我们提出了什么要求。 现在男生对小姑娘的称呼,使用频率最高的应该是“美女”了吧,你在大街上叫一声:“嗨,美女!”估计10个有8个回头,其中包括那位著名的如花。 美女的标准各不相同,首先就需要定义一下什么是美女:首先要面貌好看,其次是身材要窈窕,然后要有气质,当然了,这三者各人的排列顺序不一样,总之要成为一名美女就必须具体:面貌、身材和气质,我们用类图体现一下星探(当然,你也可以把自己想象成星探)找美女的过程,如图所示。
返回至
接口隔离原则
。
导航菜单
个人工具
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
Spring Boot 2 零基础入门
Spring Cloud
Spring Boot
设计模式之禅
VUE
Vuex
Maven
算法
技能树
Wireshark
IntelliJ IDEA
ElasticSearch
VirtualBox
软考
正则表达式
程序员精讲
软件设计师精讲
初级程序员 历年真题
C
SQL
Java
FFmpeg
Redis
Kafka
MySQL
Spring
Docker
JMeter
Apache
Linux
Windows
Git
ZooKeeper
设计模式
Python
MyBatis
软件
数学
PHP
IntelliJ IDEA
CS基础知识
网络
项目
未分类
MediaWiki
镜像
问题
健身
国债
英语
烹饪
常见术语
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息