Java七大设计原则 - 接口隔离原则

一、什么是 接口隔离原则
(Interface Segregation Principle) ?

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

 1. 接口隔离原则” 实际上它是建立在另一种设计原则之上(依赖倒置)的,即“面向接口编程,而 不是针对实现编程”  类之间的依赖不再是“真实类型“、而是 “表面类型” 。

2. “单一职责”原则要求类和接口职责单一,注重的是职责,是业务逻辑上的划分,
    “接口隔离”原则要求方法要尽可能的少,是在接口设计上的考虑。

注意接口隔离原则的辩证关系

接口设计的粒度越小,系统越灵活,这是不争的事实,但是灵活的同时也带来了结构的复杂化,开发难度的增加,可维护性降低。所以这个度要进行权衡。

看例子:

  interface A{
     //定义了4种行为
     void  aa();
	 void  ab();
	 void  ac();
	 void  ad();
  }
  
  class B implements A{ 
	 // 实际B只会实现 aa ab 
     void  aa();
	 void  ab();
	 void  ac();
	 void  ad();
  }
  
  Class C implements A{
  	 //实际C只会实现 ac ad
     void  aa();
	 void  ab();
	 void  ac();
	 void  ad();
  }
  
  public class School {

     public static void main(String[] args) {
	    A  bb = new B();
	    A  cc = new C(); 
		bb.aa();
		cc.ac();
   }
}

 看似没什么问题、实际上、问题很多

1、 调用异常:调用人不清楚 bb cc 是否都实现了内部的方法、从外面调用看都实现了(但是你却没实现 -- 还需要花人力成本去了解内部具体实现逻辑是否实现)、会造成调用错误 

2、 修改成本:C需要加一个行为功能、所以给 Interface A  添加接口、这样会造成B 也需要改动,

看似不需要实现、但是类多了之后、会造成小的改动需要修改很多类 - 设计明显不合理

  interface A{
     void  aa();
	 void  ab();
  }

  interface AL{
	 void  ac();
	 void  ad();
  }

  class B implements A{ 
     void  aa();
	 void  ab();
  }
  
  Class C implements AL{
	 void  ac();
	 void  ad();
  }
  
  public class School {

     public static void main(String[] args) {
	    A  bb = new B();
	    AL  cc = new C(); 
		bb.aa();
		cc.ac();
   }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

空白的泡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值