接口隔离原则

来源:互联网 发布:石家庄 软件开发培训 编辑:程序博客网 时间:2024/05/20 02:25

有两种定义:

  1. Clients should not be forced to depend upon interfaces that they don't use.客户端不应该依赖于它不使用的接口。
  2. The dependency of one class to another one should depend on the smallest possible interface。一个类对另外一个类的依赖性应当是建立在最小的接口上的。

使用多个专门的接口,而不是单一的总接口,这样每个独立的接口都承担一个相对独立具体的角色,不会拥有不该有的方法也不会少了本身该有的方法,保证了接口的细化和纯洁。

手机手机同时具有发送短信(sms())和打电话(call())的功能,那我们是不是该把手机类实现的功能接口定义为下面的呢?


这样就遇到有个问题,假定某个厂商针对老人专门开发了只能打电话的手机,它就肯定不需要发送短信的功能了,显然依照上面的接口,发送短信的功能就是多余的了。


如果把发送短信和打电话的接口分开,就能很好的解决这个问题。

接口污染:将不同的角色的接口合并为一个臃肿的接口就是对接口的污染,将不同的可变性封装到同一个实体中。

已经被污染了的接口,尽量去修改。若变更的风险较大,则采用适配器模式进行转处理。

接口隔离的使用很简单:尽量建立单一接口,接口尽量细化和尽量少。

但也要注意:

  • 1.接口尽量细化,但要有度。过多的单一接口,会然设计复杂化。
  • 2.为依赖接口的类定制服务,只暴漏给调用的类需要的方法,为专一的模块定义一对一的服务,建立最小的依赖关系。
  • 3.提高内聚,较少对外交互,使用最少的方法做最多的事情。

0 0
原创粉丝点击