美文网首页
外观模式-java

外观模式-java

作者: JW2015 | 来源:发表于2022-01-19 17:44 被阅读0次

概念:

又称门面模式,隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。

外部应用程序不用关心内部子系统的具体的细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。

这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。

外观模式“迪米特法则”的典型应用。

结构:

外观(Facade)角色:为多个子系统对外提供一个共同的接口。
子系统(Sub System)角色:实现系统的部分功能,客户可以通过外观角色访问它。

实现案例:

以实现一个系统的简单架构为例,客户端需要使用三个子系统(HttpRequest、ImageLoader、Common)提供的功能方法,这里用外观类(Facade),对这些子系统进行委托调用。

//子系统1
public class HttpRequest {
    public void init() {
        System.out.println("初始化... HttpRequest");
    }

    public void request() {
        System.out.println("执行网络请求... http");
    }
}
//子系统2
public class ImageLoader {
    public void init() {
        System.out.println("初始化... ImageLoader");
    }

    public void load() {
        System.out.println("加载图片...image");
    }
}
//子系统3
public class Common {
    public void init() {
        System.out.println("初始化... Common");
    }

    public void method() {
        System.out.println("执行公共方法... common");
    }
}
//外观类
public class Facade {
    private Common common;
    private HttpRequest httpRequest;
    private ImageLoader imageLoader;

    public Facade() {
        common = new Common();
        httpRequest = new HttpRequest();
        imageLoader = new ImageLoader();
    }

    public void init() {
        common.init();
        httpRequest.init();
        imageLoader.init();
    }

    public void httpRequest() {
        httpRequest.request();
    }

    public void loadImage() {
        imageLoader.load();
    }

    public void commonMethod() {
        common.method();
    }
}
public class Test {
    public static void main(String[] args) {
        Facade facade = new Facade();
        facade.init();
        System.out.println(">>>>>>>>>>>>>>>>>");
        facade.httpRequest();
        facade.commonMethod();
        facade.loadImage();
    }
}

系统设计常用的一种模式,案例中Facade聚合了各个子系统,并对子系统的功能方法对外提供了统一的封装。

优点:

1、减少系统相互依赖。
2、提高灵活性。
3、提高了安全性。

缺点:

不符合开闭原则,修改起来很麻烦。

使用场景:

1、当一个复杂系统的子系统很多时,外观模式可以为系统设计一个简单的接口供外界访问。
2、当客户端与多个子系统之间存在很大的联系时,引入外观模式可将它们分离,从而提高子系统的独立性和可移植性。

相关文章

  • 设计模式详解——外观模式

    本篇文章介绍一种设计模式——外观模式。本篇文章内容参考《JAVA与模式》之门面模式,外观模式,深入浅出外观模式(二...

  • 了解外观模式

    java 设计模式 ------外观模式 Java中一共有23种设计模式,每种设计模式各有特...

  • 外观模式(Facede)

    本文参考自: 《JAVA设计模式》之外观模式(Facade) 1. 作用 外观模式也叫门面模式,门面模式是对象的结...

  • java外观模式

    其他设计模式java单例模式java建造者模式java策略模式java代理模式java观察者模式java适配器模式...

  • Java外观模式

  • Java 外观模式

    文集地址[https://www.jianshu.com/nb/49360554] 一句话总结外观模式 封装子类的...

  • 外观模式-java

    概念: 又称门面模式,隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型...

  • Java 外观模式

    一、定义 外观模式又称门面模式,是一种通过多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式,...

  • Java设计模式之11_Facade(外观模式)

    更多Java设计模式:Java设计模式-目录 一、模式定义 外观模式(Facade Pattern):外部与一个子...

  • Java设计模式——外观模式

    Java设计模式之外观模式 这期跟大家分享一下外观模式,跟前几期一样外观模式也是一种结构模式,都是为了使程序结构更...

网友评论

      本文标题:外观模式-java

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