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

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

作者: 写一本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