<Java设计模式>——接口隔离原则(ISP)VIP开启更多姿势

接口隔离的接口是什么


  • 实例接口:在Java中申明的一个类,使用new关键字创建的对象。
  • 类接口:Java中使用interface关键字定义的接口。

什么是接口隔离原则


建立单一接口,不需要庞大臃肿的接口,尽量细化接口,同时接口的方法尽量的少。

生活上的例子


我们出去的旅游的时候,肯定会去住酒店,那么在前台登记完成之后,你会拿到一把钥匙,这个钥匙只能打开你预定房间的门。假如前台给你的不是一把钥匙,而是一串酒店所有的钥匙,虽然你任能够打开自己预定的房间,但是你也可以打开其他的房间啊,这个时候,你是不是觉得可以干点坏事了呢?哈哈,不过现实是遵守接口隔离原则的,我只提供你能够访问的。

在使用第三方SDK的时候,他们提供给你接口,基本上都是符合这个原则,你只能够调用他提供给你的api,其他你是没有访问权限的(反射除外),当然如果你自己的写SDK的时候,也要遵守这个原则,防止使用SDK的开发者调用了本不应该开放的接口。

单一职责和接口隔离


单一职责原则讲的是实现时的职责分离,实现类需要实现该职责的所有方法。

接口隔离原则讲的是设计时的架构分离,限制实现类,避免实现类实现不需要实现的方法,同时也限制外部类访问的范围,但是必须符合单一职责原则。

举个例子:

//书的管理类
interface BookDbManager{
    
    public Book queryBookByName(String name);

    public void deleteBookByName(String name);

    public Cursor queryBook(String sql);

    public void deleteBook(String sql);

}

看看上面的接口,他只是处理Book管理的工作,可以说是符合单一职责原则的,加入限制有两种身份的人需要使用查询和删除Book的功能,一个是管理员,一个是普通用户,你会直接把BookDbManager都给他们使用吗?很显然是不行的,普通用户不见得会使用sql语句,当然也不能给他使用sql语句,因为这个里面有很大的风险,所以咱们必须根据身份重新定义新的接口。

//管理员访问的接口
interface AdminBookDbManager{
    public Cursor queryBook(String sql);

    public void deleteBook(String sql);
}

//用户访问的接口
interface UserBookDbManager{
    public Book queryBookByName(String name);

    public void deleteBookByName(String name);
}

通过接口隔离原则,有效的隔离不同用户身份访问的权限,并且符合单一职责原则。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 目录: 设计模式六大原则(1):单一职责原则 设计模式六大原则(2):里氏替换原则 设计模式六大原则(3):依赖倒...
    加油小杜阅读 740评论 0 1
  • 设计模式六大原则 设计模式六大原则(1):单一职责原则 定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类...
    viva158阅读 783评论 0 1
  • 转载标注声明:http://www.uml.org.cn/sjms/201211023.asp 目录:[设计模式六...
    Bloo_m阅读 739评论 0 7
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,482评论 25 708
  • 突然好想你,想打个电话告诉你,想听听你的声音…… 可是,我却胆怯了,我没有打给你,我没能听见你的声音,也没有告诉你...
    胡紫阅读 193评论 0 0