美文网首页
设计原则——接口隔离原则

设计原则——接口隔离原则

作者: 写一本2000000的书 | 来源:发表于2019-08-22 17:31 被阅读0次

定义:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。

// 接口Ifunc 有一些方法
interface Ifunc {
    void func1();
    void func2();
    void func3();
    void func4();
    void func5();
}

// 对于a来说 只需实现方法 1,2, 3
class A implements Ifunc {

    @Override
    public void func1() {
        // TODO Auto-generated method stub
        
        System.out.println("实现func1");
        
    }

    @Override
    public void func2() {
        // TODO Auto-generated method stub
        System.out.println("实现func2");
        
    }

    @Override
    public void func3() {
        // TODO Auto-generated method stub
        System.out.println("实现func3");
        
    }

    @Override
    public void func4() {
        // TODO Auto-generated method stub
        
    }

    @Override
    public void func5() {
        // TODO Auto-generated method stub
        
    }
    
}

// 对于b来说 只需实现方法 3, 4,5
class B implements Ifunc {

    @Override
    public void func1() {
        // TODO Auto-generated method stub
        
    }

    @Override
    public void func2() {
        // TODO Auto-generated method stub
        
    }

    @Override
    public void func3() {
        // TODO Auto-generated method stub
        System.out.println("实现func3");
        
    }

    @Override
    public void func4() {
        // TODO Auto-generated method stub
        System.out.println("实现func4");
        
    }

    @Override
    public void func5() {
        // TODO Auto-generated method stub
        System.out.println("实现func5");
        
    }
    
}

// 如果不拆分接口,A,B 都要实现不需要的方法,太冗余,所以拆分Ifunc接口

interface IfuncA {
    void func1();
    void func2();
}

interface IfuncB {
    void func4();
    void func5();
}

interface IfunC {
    void func3();
}

// 对于a来说 只需实现方法 1,2, 3
class A implements IfuncA, IfunC {

    @Override
    public void func1() {
        // TODO Auto-generated method stub
        
        System.out.println("实现func1");
        
    }

    @Override
    public void func2() {
        // TODO Auto-generated method stub
        System.out.println("实现func2");
        
    }

    @Override
    public void func3() {
        // TODO Auto-generated method stub
        System.out.println("实现func3");
        
    }
}

// 对于b来说 只需实现方法 3, 4,5
class B implements IfuncB, IfunC  {

    @Override
    public void func3() {
        // TODO Auto-generated method stub
        System.out.println("实现func3");
        
    }

    @Override
    public void func4() {
        // TODO Auto-generated method stub
        System.out.println("实现func4");
        
    }

    @Override
    public void func5() {
        // TODO Auto-generated method stub
        System.out.println("实现func5");
        
    }
    
}

这样对于A、B而言,通过接口分离,避免实现了不必要的方法

相关文章

网友评论

      本文标题:设计原则——接口隔离原则

      本文链接:https://www.haomeiwen.com/subject/zwhosctx.html