——接口隔离原则(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);
}

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

你可能感兴趣的:(——接口隔离原则(ISP)VIP开启更多姿势)