我是靠谱客的博主 文静猎豹,最近开发中收集的这篇文章主要介绍接口隔离原则----设计模式七大原则,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

接口隔离原则----设计模式七大原则

今天又学习了设计模式的接口隔离原则,之前没怎么接触过,哈哈,只好照搬硬套来做个笔记。

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

我自己的简单理解就是,一个类(子类)通过接口去使用(依赖)另一个类(父类),此父类需要实现接口,但是父类为子类提供的服务方法又不需要实现接口的所有方法,以免造成浪费,此时就需要对接口进行拆分,使其满足接口隔离的原则,有点类似与代理设计模式,但是对接口进行拆分。

直接给代码演示,感兴趣的小伙伴还可以自行分析分析,一起讨论哦~

之前未符合接口隔离原则的设计模式

package com.gaoliwei.test;

interface Interface1{
    void operaion1();
    void operaion2();
    void operaion3();
    void operaion4();
    void operaion5();
}

//定义类B,实现接口Interface1中的所有方法
class B implements Interface1{

    @Override
    public void operaion1() {
        System.out.println("B实现了 operation1");
    }

    @Override
    public void operaion2() {
        System.out.println("B实现了 operation2");
    }

    @Override
    public void operaion3() {
        System.out.println("B实现了 operation3");
    }

    //在B类中多余的operation4和operation5方法
    @Override
    public void operaion4() {
        System.out.println("B实现了 operation4");
    }

    @Override
    public void operaion5() {
        System.out.println("B实现了 operation5");
    }
}

class D implements Interface1{

    @Override
    public void operaion1() {
        System.out.println("D实现了 operation1");
    }

    //在D中多余的operaion2()和operaion3()方法
    @Override
    public void operaion2() {
        System.out.println("D实现了 operation2");
    }

    @Override
    public void operaion3() {
        System.out.println("D实现了 operation3");
    }

    @Override
    public void operaion4() {
        System.out.println("D实现了 operation4");
    }

    @Override
    public void operaion5() {
        System.out.println("D实现了 operation5");
    }
}

class A {               //A类同通过接口Interface1依赖(使用)B类,但是只会用到1,2.3
    public void depend1(Interface1 i){
        i.operaion1();
    }

    public void depend2(Interface1 i){
        i.operaion2();
    }

    public void depend3(Interface1 i){
        i.operaion3();
    }
}

class C {           //C类同通过接口Interface1依赖(使用)D类,但是只会用到1,4,5
    public void depend1(Interface1 i){
        i.operaion1();
    }

    public void depend4(Interface1 i){
        i.operaion4();
    }

    public void depend5(Interface1 i){
        i.operaion5();
    }
}

public class Segregation01 {
}

接口拆分改进之后符合接口隔离原则的设计模式

package com.gaoliwei.test;

interface Interface02{
    void operation01();
}

interface Interface03{
    void operation02();
    void operation03();
}

interface Interface04{
    void operation04();
    void operation05();
}

class F implements Interface02,Interface03{             //已去除冗余方法

    @Override
    public void operation01() {
        System.out.println("F实现了 operation1");
    }

    @Override
    public void operation02() {
        System.out.println("F实现了 operation2");
    }

    @Override
    public void operation03() {
        System.out.println("F实现了 operation3");
    }
}

class  H implements Interface02, Interface04{               //已去除冗余方法

    @Override
    public void operation01() {
        System.out.println("H实现了 operation1");
    }

    @Override
    public void operation04() {
        System.out.println("H实现了 operation4");
    }

    @Override
    public void operation05() {
        System.out.println("H实现了 operation5");
    }
}


class E {
    public void depend01(Interface02 interface02){      //通过接口依赖实现类
        interface02.operation01();
    }

    public void depend02(Interface03 interface03){      //通过接口依赖实现类
        interface03.operation02();
    }

    public void depend03(Interface03 interface03){
        interface03.operation03();
    }
}

class G {
    public void depend01(Interface02 interface02){      //通过接口依赖实现类
        interface02.operation01();
    }

    public void depend04(Interface04 interface04){
        interface04.operation04();
    }

    public void depend05(Interface04 interface04){
        interface04.operation05();
    }
}

public class Segregation02 {
    public static void main(String[] args) {            //进行测试
        E e = new E();
        G g = new G();

        e.depend01(new F());        //E类通过接口去依赖F类
        e.depend02(new F());
        e.depend03(new F());

        g.depend01(new H());        //G类通过接口去依赖H类
        g.depend04(new H());
        g.depend05(new H());
    }
}

运行结果

F实现了 operation1
F实现了 operation2
F实现了 operation3
H实现了 operation1
H实现了 operation4
H实现了 operation5

最后

以上就是文静猎豹为你收集整理的接口隔离原则----设计模式七大原则的全部内容,希望文章能够帮你解决接口隔离原则----设计模式七大原则所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部