七大设计原则之接口隔离

首页 » 设计模式 » 七大设计原则之接口隔离

原则:一个类对另一个类的依赖应该建立在最小的接口上

违反原则例子:

package 接口隔离;

public class test {

  public static void main(String[] args) {
  
 }
}
interface inter1{
 void test1();
 void test2();
 void test3();
 void test4();
 void test5();
}
class A{//A类通过接口inter1去依赖(使用)B类,但是只会用到1,2,3方法
 public void depend1(inter1 i) {
  i.test1();
 }
 public void depend2(inter1 i) {
  i.test2();
 }
 public void depend3(inter1 i) {
  i.test3();
 }
}
class C{//C类通过接口inter1去依赖(使用)D类,但是只会用到1,4,5方法
 public void depend1(inter1 i) {
  i.test1();
 }
 public void depend2(inter1 i) {
  i.test4();
 }
 public void depend3(inter1 i) {
  i.test5();
 }
}
class B implements inter1{

 @Override
 public void test1() {
  // TODO Auto-generated method stub
  System.out.println("b实现test1");
 }

 @Override
 public void test2() {
  // TODO Auto-generated method stub
  System.out.println("b实现test2");
 }

 @Override
 public void test3() {
  // TODO Auto-generated method stub
  System.out.println("b实现test3");
 }

 @Override
 public void test4() {
  // TODO Auto-generated method stub
  System.out.println("b实现test4");
 }

 @Override
 public void test5() {
  // TODO Auto-generated method stub
  System.out.println("b实现test5");
 }
 
}
class D implements inter1{
 
 @Override
 public void test1() {
  // TODO Auto-generated method stub
  System.out.println("d实现test1");
 }
 
 @Override
 public void test2() {
  // TODO Auto-generated method stub
  System.out.println("d实现test2");
 }
 
 @Override
 public void test3() {
  // TODO Auto-generated method stub
  System.out.println("d实现test3");
 }
 
 @Override
 public void test4() {
  // TODO Auto-generated method stub
  System.out.println("d实现test4");
 }
 
 @Override
 public void test5() {
  // TODO Auto-generated method stub
  System.out.println("d实现test5");
 }
 
}

根据接口隔离原则改进

package 接口隔离;

public class test {
  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.depend4(new D());
  c.depend5(new D());
 }
}

interface inter1{
 void test1();
}
interface inter2{
 void test2();
 void test3();
}
interface inter3{
 void test4();
 void test5();
}

class A{//A类通过接口inter1,inter2去依赖(使用)B类,但是只会用到1,2,3方法
 public void depend1(inter1 i) {
  i.test1();
 }
 public void depend2(inter2 i) {
  i.test2();
 }
 public void depend3(inter2 i) {
  i.test3();
 }
}
class C{//C类通过接口inter1,inter3去依赖(使用)D类,但是只会用到1,4,5方法
 public void depend1(inter1 i) {
  i.test1();
 }
 public void depend4(inter3 i) {
  i.test4();
 }
 public void depend5(inter3 i) {
  i.test5();
 }
}
class B implements inter1,inter2{

 @Override
 public void test1() {
  // TODO Auto-generated method stub
  System.out.println("b实现test1");
 }

 @Override
 public void test2() {
  // TODO Auto-generated method stub
  System.out.println("b实现test2");
 }

 @Override
 public void test3() {
  // TODO Auto-generated method stub
  System.out.println("b实现test3");
 }	
}
class D implements inter1,inter3{
 
 @Override
 public void test1() {
  // TODO Auto-generated method stub
  System.out.println("d实现test1");
 }
 @Override
 public void test4() {
  // TODO Auto-generated method stub
  System.out.println("d实现test4");
 }
 
 @Override
 public void test5() {
  // TODO Auto-generated method stub
  System.out.println("d实现test5");
 }
 
}

 

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

 



觉得文章有用就打赏一下弟弟吧

支付宝扫一扫打赏

微信扫一扫打赏

Vieu4.5主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。
正在播放:

作者想对您说:

累了就停下来听首歌吧

听完后会给您一个好心情

最后

等到您不容易

还希望您能多待一会儿

      00:00/00:00