您现在的位置是:主页 > news > 自动生成网站地图的工具/怎样推广app别人才愿意下载
自动生成网站地图的工具/怎样推广app别人才愿意下载
admin2025/5/1 7:00:00【news】
简介自动生成网站地图的工具,怎样推广app别人才愿意下载,做网站推广大概需要多少钱,网站建设对宣传的意义七大设计原则之单一接口隔离原则接口隔离原则案例应用实例改进上一篇:设计模式系列(一)七大设计原则-----单一职责原则 下一篇:设计模式系列(三)七大设计原则-----依赖倒转原则 接口隔离原则 介绍&#x…
自动生成网站地图的工具,怎样推广app别人才愿意下载,做网站推广大概需要多少钱,网站建设对宣传的意义七大设计原则之单一接口隔离原则接口隔离原则案例应用实例改进上一篇:设计模式系列(一)七大设计原则-----单一职责原则 下一篇:设计模式系列(三)七大设计原则-----依赖倒转原则
接口隔离原则
介绍&#x…
七大设计原则之单一接口隔离原则
- 接口隔离原则
- 案例
- 应用实例
- 改进
上一篇:设计模式系列(一)七大设计原则-----单一职责原则
下一篇:设计模式系列(三)七大设计原则-----依赖倒转原则
接口隔离原则
介绍:客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上
案例
- 案例uml图
- 如上的uml图, 类 A 通过接口 Interface1 依赖类 B,类 C 通过接口 Interface1 依赖类 D,如果接口 Interface1 对于类 A 和类 C 来说不是最小接口,那么类 B 和类 D 必须去实现他们不需要的方法
- 按照接口隔离原则应该这样处理:将接口 Interface1 拆分成 独立的接口,类A与类C分别与它们需要的接口建立依赖关系。也就是采用接口隔离原则
应用实例
- 按照上面的UML类图实现此代码
package com.atguigu.principle.segregation;
public class Segregation1{public static void main(String[] args){ }
}
//接口
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 voido peration3(){ System.out.println("D 实现了 operation3"); } public void operation4(){ System.out.println("D 实现了 operation4");} public void operation5(){ System.out.println("D 实现了 operation5");}
}//A 类通过接口 Interface1 依赖(使用)B 类,但是只会用到 1,2,3 方法
classA{public void depend1(Interface1 i){ i.operation1(); } public void depend2(Interface1 i){i.operation2(); } public void depend3(Interface1 i){ i.operation3();}
}//C 类通过接口 Interface1 依赖(使用)D 类,但是只会用到 1,4,5 方法
classC{public void depend1(Interface1 i){ i.operation1();} public void depend4(Interface1 i){ i.operation4(); } public void depend5(Interface1 i){ i.operation5(); }
}
- 情况描述:
- A类通过接口 Interface1 依赖(使用)B类,但是实际上只是用到1,2,3方法
- B类通过接口 Interface2 依赖(使用)D 类,但是只会用到 1,4,5 方法
注:综上,两个实现类实现同一个接口,但是却并不会用到接口里面的所有方法,违法接口隔离原则
改进
- 类 A 通过接口 Interface1 依赖类 B,类 C 通过接口 Interface1 依赖类 D,如果接口 Interface1 对于类 A 和类 C 来说不是最小接口,那么类 B 和类 D 必须去实现他们不需要的方法
- 将接口 Interface1 拆分为独立的几个接口,类 A 和类 C 分别与他们需要的接口建立依赖关系。也就是采用接口隔离原则
- 接口 Interface1 中出现的方法,根据实际情况拆分为三个接口,如下新UML所示
- 代码实现
package com.atguigu.principle.segregation.improve;
public class Segregation1{public static void main(String[] args){ // 使用一把 A a = new A(); a.depend1(new B());//A 类通过接口去依赖 B 类 a.depend2(new B()); a.depend3(new B());C c = new C();c.depend1(new D()); //C 类通过接口去依赖(使用)D 类 c.depend4(new D()); c.depend5(new D());}
}// 接口 1
interface Interface1{ void operation1();
}
// 接口 2
interface Interface2{ void operation2();void operation3();
}
// 接口 3
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");}
}//A 类通过接口 Interface1 依赖(使用)B 类,但是只会用到 1,2,3 方法
classA{public void depend1(Interface1 i){ i.operation1(); } public void depend2(Interface2 i){i.operation2(); } public void depend3(Interface2 i){ i.operation3();}
}//C 类通过接口 Interface1 依赖(使用)D 类,但是只会用到 1,4,5 方法
classC{public void depend1(Interface1 i){ i.operation1();} public void depend4(Interface3 i){ i.operation4(); } public void depend5(Interface3 i){ i.operation5(); }
}