程序员

设计模式系列(二)七大设计原则-----接口隔离原则

2020-10-12  本文已影响0人  上古神龙

接口隔离原则

介绍:客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上

案例

  1. 案例uml图


    uml类图

应用实例

  1. 按照上面的UML类图实现此代码
package com.atguigu.principle.segregation;
public class Segregation1{
    public static void main(String[] args){ 
    
    }
}
//接口 
interface Interface1{ 
    void operation1(); 
    void operation2();
    void operation3(); 
    void operation4(); 
    void operation5();
}
class B implements Interface1{ 
    public void operation1(){ 
        System.out.println("B 实现了 operation1"); 
    }
    public void operation2(){ 
        System.out.println("B 实现了 operation2");
    }                       
    public void operation3(){ 
        System.out.println("B 实现了 operation3");
    } 
    public void operation4(){ 
        System.out.println("B 实现了 operation4");
    }           
    public void operation5(){ 
        System.out.println("B 实现了 operation5"); 
    }
}
class D implements Interface1{ 
    public void operation1(){
        System.out.println("D 实现了 operation1");
    }
    public void operation2(){ 
        System.out.println("D 实现了 operation2"); 
    } 
    public voido peration3(){ 
        System.out.println("D 实现了 operation3"); 
    } 
    public void operation4(){ 
        System.out.println("D 实现了 operation4");
     } 
    public void operation5(){ 
        System.out.println("D 实现了 operation5");
    }
}

//A 类通过接口 Interface1 依赖(使用)B 类,但是只会用到 1,2,3 方法 
classA{
    public void depend1(Interface1 i){ 
        i.operation1(); 
    } 
    public void depend2(Interface1 i){
     i.operation2(); 
    } 
     public void depend3(Interface1 i){ 
     i.operation3();
     }
}

//C 类通过接口 Interface1 依赖(使用)D 类,但是只会用到 1,4,5 方法 
classC{
    public void depend1(Interface1 i){ 
        i.operation1();
    } 
    public void depend4(Interface1 i){ 
        i.operation4(); 
    } 
    public void depend5(Interface1 i){ 
        i.operation5(); 
    } 
}
  1. 情况描述:

改进

  1. 代码实现
package com.atguigu.principle.segregation.improve;
public class Segregation1{
    public static void main(String[] args){ 
        // 使用一把 
        A a = new A(); 
        a.depend1(new B());
        //A 类通过接口去依赖 B 类 
        a.depend2(new B()); 
        a.depend3(new B());
        C c = new C();
        c.depend1(new D()); 
        //C 类通过接口去依赖(使用)D 类 
        c.depend4(new D()); 
        c.depend5(new D());
    }
}

// 接口 1 
interface Interface1{ 
    void operation1();
}
// 接口 2 
interface Interface2{ 
    void operation2();
    void operation3();
}
// 接口 3 
interface Interface3{ 
    void operation4();
    void operation5();
}
class B implements Interface1,Interface2{
    public void operation1(){ 
        System.out.println("B 实现了 operation1"); 
    }
    public void operation2(){ 
        System.out.println("B 实现了 operation2");
    }                       
    public void operation3(){ 
        System.out.println("B 实现了 operation3");
    } 
}

class D implements Interface1,Interface3{ 
    public void operation1(){
        System.out.println("D 实现了 operation1");
    }
    public void operation4(){ 
        System.out.println("D 实现了 operation4");
     } 
    public void operation5(){ 
        System.out.println("D 实现了 operation5");
    }
}

//A 类通过接口 Interface1 依赖(使用)B 类,但是只会用到 1,2,3 方法 
classA{
    public void depend1(Interface1 i){ 
        i.operation1(); 
    } 
    public void depend2(Interface2 i){
     i.operation2(); 
    } 
     public void depend3(Interface2 i){ 
     i.operation3();
     }
}

//C 类通过接口 Interface1 依赖(使用)D 类,但是只会用到 1,4,5 方法 
classC{
    public void depend1(Interface1 i){ 
        i.operation1();
    } 
    public void depend4(Interface3 i){ 
        i.operation4(); 
    } 
    public void depend5(Interface3 i){ 
        i.operation5(); 
    } 
}
上一篇 下一篇

猜你喜欢

热点阅读