6大设计原则-接口隔离原则

2019-04-30  本文已影响0人  stayiwithime

接口隔离原则

  1. 接口隔离原则的定义

先说第一种,简单的说就是客户端不需要的接口就剔除掉,客户端需要什么接口就提供什么接口,那这样就需要对接口进行细化,第二种就是建立的接口尽量单一,不要将过多的内容放在一个接口里面,也就是接口尽量细化(就拿我最近的一个例子来说,做amazon广告那块,需要同步amaozn后台的数据,但这个是后台程序跑的不需要暴露给用户使用,用户只需要查看同步过来的数据结果并不需要关心同步的过程,那么我可以分为两个service来完成这个业务,一个留给客户查询,一个实现同步的业务
那些定义说不太清楚,上栗子:
就拿星探发现美女这一场景来说,首先得知道定义美女的条件:脸蛋,身材,气质,那么类图4-1:

4-1
代码如下:
public interface IPettyGirl {
    //脸好看
    void goodLooking();
    //身材好
    void niceFigure();
    //气质好
    void greatTemperamennt();
}
public class PettyGirl implements IPettyGirl {
    private String name;
    public PettyGirl(String name){
        this.name = name;
    }
    @Override
    public void goodLooking() {
        System.out.println(this.name+"---脸蛋很漂亮!");
    }

    @Override
    public void niceFigure() {
        System.out.println(this.name+"---身材非常棒!");
    }

    @Override
    public void greatTemperamennt() {
        System.out.println(this.name+"---气质非常好!");
    }
}
public abstract class AbstractSearcher {
    protected IPettyGirl pettyGirl;
    AbstractSearcher(IPettyGirl pettyGirl){
        this.pettyGirl = pettyGirl;
    }
    public abstract void show();
}
public class Searcher extends AbstractSearcher {
    public Searcher(IPettyGirl pettyGirl){
        super(pettyGirl);
    }
    @Override
    public void show() {
        System.out.println("---美女信息如下---");
        //展示面容
        super.pettyGirl.goodLooking();
        //展示身材
        super.pettyGirl.niceFigure();
        //展示气质
        super.pettyGirl.greatTemperamennt();
    }
}
public class Client {
    public static void main(String[] args) {
        IPettyGirl yanran = new PettyGirl("嫣然");
        AbstractSearcher searcher = new Searcher(yanran);
        searcher.show();
    }
}

这个程序的运行结果都很正常,但是审美这个东西不是一个一直不变的东西,随着审美观的变化,那么对美女的定义也是在变化,相信大部分人都会把脸蛋和身材一般但是气质好的女孩也认为是美女,但是我们接口是需要满足三个条件才认为是美女,如果我们去重新拓展一个美女类只实现greatTemperament方法,其他两个方法置空,那么打印的信息会少两条,那判断的逻辑就会被动改变,那就优化一下,类图4-2:


4-2

这样就把IPettyGirl接口拆分为了两个,将两种不同的审核标准拆分开来了,pettyGirl可以分别实现两个接口也可以同时实现两个接口,都会满足美女这个定义。那如果要再将脸蛋和身材在拆分,那就看有没有实际需要,如果只是为了拆分而拆分那完全没必要,隔离也最好是有限度的,还是那句话,具体场景具体对待。这样就提高的系统的灵活性和可维护性。

  1. 保证接口的纯洁性

接口的隔离原则是对接口进行规范约束,其包含以下4层含义:

内容来自《设计模式之禅》

上一篇 下一篇

猜你喜欢

热点阅读