- 基本介绍
客户端不应该依赖它不需要的接口,即一个类对另一个类的以来应该建立在最小的接口上。
题目:类A依赖B,类C依赖D
接口隔离原则理解:对于此题,B,D相当于地基,以后在需要B,D中的操作就可以直接依赖B,D来进行使用,不用再二次敲写代码。
- 应用实例
题目:有5个接口,接口中含操作1,2,3,4,5。类A依赖类B,实现操作1,2,3;类C依赖类D,实现操作1,4,5
例1:
此方法的接口中有很多方法是被浪费的,他对于被依赖者是没有用的,但是还会被被依赖者调用很多次,会造成内存浪费。
package 接口隔离原则01;
public class example01 {
}
interface Interface1{
void operation1();
void operation2();
void operation3();
void operation4();
void operation5();
}
class B implements Interface1 {
public void operation1(){
System.out.println("B实现了operation1");
}
public void operation2(){
System.out.println("B实现了operation2");
}
public void operation3(){
System.out.println("B实现了operation3");
}
public void operation4(){
System.out.println("B实现了operation4");
}
public void operation5(){
System.out.println("B实现了operation5");
}
}
class D implements Interface1 {
public void operation1(){
System.out.println("D实现了operation1");
}
public void operation2(){
System.out.println("D实现了operation2");
}
public void operation3(){
System.out.println("D实现了operation3");
}
public void operation4(){
System.out.println("D实现了operation4");
}
public void operation5(){
System.out.println("D实现了operation5");
}
}
class A{//A类通过接口Interface1依赖使用B类,但是只会用到1,2,3方法
public void depend1(Interface1 i){
i.operation1();
}
public void depend2(Interface1 i){
i.operation2();
}
public void depend3(Interface1 i){
i.operation3();
}
}
class C{//C类通过接口Interface1依赖使用D类,但是只会用到1,4,5方法
public void depend1(Interface1 i){
i.operation1();
}
public void depend4(Interface1 i){
i.operation4();
}
public void depend5(Interface1 i){
i.operation5();
}
}
例2:
package 接口隔离原则02;
public class example02 {
public static void main(String[] args) {
A a=new A();
a.depend1(new B());
a.depend2(new B());
a.depend3(new B());
C c=new C();
c.depend1(new D());
c.depend4(new D());
c.depend5(new D());
}
}
interface Interface1{
void operation1();
}
interface Interface2{
void operation2();
void operation3();
}
interface Interface3{
void operation4();
void operation5();
}
class B implements Interface1, Interface2{
public void operation1(){
System.out.println("B实现了operation1");
}
public void operation2(){
System.out.println("B实现了operation2");
}
public void operation3(){
System.out.println("B实现了operation3");
}
}
class D implements Interface1,Interface3 {
public void operation1(){
System.out.println("D实现了operation1");
}
public void operation4(){
System.out.println("D实现了operation4");
}
public void operation5(){
System.out.println("D实现了operation5");
}
}
class A{//A类通过接口Interface1依赖使用B类,但是只会用到1,2,3方法
public void depend1(Interface1 i){
i.operation1();
}
public void depend2(Interface2 i){
i.operation2();
}
public void depend3(Interface2 i) {
i.operation3();
}
}
class C{//C类通过接口Interface1依赖使用D类,但是只会用到1,4,5方法
public void depend1(Interface1 i){
i.operation1();
}
public void depend4(Interface3 i){
i.operation4();
}
public void depend5(Interface3 i){
i.operation5();
}
}
思路:
- 先设置接口
- 在把依赖的一方敲出来(格式:类** 实现 接口1,2,3… 如:class B implements Interface1,Interface2{ }
- 然后敲出被依赖的一方
- 完善主函数


![[企业框架设计模式]设计模式七大原则之接口隔离原则 [企业框架设计模式]设计模式七大原则之接口隔离原则](http://www.mshxw.com/aiimages/31/275179.png)
