常用设计模式之门面模式

author author     2022-09-23     482

关键词:

门面模式也可以叫做外观模式
为子系统或者模块中的一组接口提供一个一致的访问方式,此模式定义了一个高层接口,这个接口使得各个子系统/模块中的功能
更加容易使用。
实际应用中,我们在对付一些老旧的代码或者即便不是老旧code,但涉及多个子系统时,除了重写全部代码,我们还可能采用这
样一种策略:重新进行类的设计,将原来分散在源码中的类/结构及方法重新组合,形成新的、统一的接口,供上层应用使用,同
时也隐藏了子系统或者子模块中功能实现的复杂性
例子:
//模块A中的类
public class ServiceA {
  public void start(){
    System.out.println("模块A中的start方法");
  }
}
//模块B中的类
public class ServiceB {
  public void run(){
    System.out.println("模块B中的run方法");
  }
}

//模块C中的类
public class ServiceC {
  public void end(){
    System.out.println("模块C中的end方法");
  }
}

//外观类/门面类
public class Facade {
  private ServiceA a;
  private ServiceB b;
  private ServiceC c;
  public Facade() {
    a = new ServiceA();
    b = new ServiceB();
    c = new ServiceC();
  }

  public void start(){
    a.start();
  }
  public void run(){
    b.run();
  }
  public void end(){
    c.end();
  }

  public void service(){
    a.start();
    b.run();
    c.end();
  }

}

//测试类
public class Test {

  public static void main(String[] args) {
    Facade f = new Facade();
    f.start();
    f.run();
    f.end();

    f.service();
  }
}

Facade是我们的外观类/门面类,用户可以通过这个类使用到系统中不同模块中的不同方法,同时也对用户隐藏了系统中对这些功能的实现细节。给用户提供了一个统一的访问方式。

设计模式之门面模式(代码片段)

设计模式之门面模式  门面模式(FacadePattern)也叫外观模式,是一种常见的封装模式,定义:Provideaunifiedinterfacetoasetofinterfacesinasubsystem.Facadedefinesahigher-levelinterfacethatmakesthesubsystemeasiertouse.(要求一个 查看详情

headfirst设计模式之门面模式

一、实现家庭影院1.1packageheadfirst.designpatterns.facade.hometheater;23publicclassHomeTheaterFacade{4Amplifieramp;5Tunertuner;6DvdPlayerdvd;7CdPlayercd;8Projectorprojector;9TheaterLightslights;10Screenscreen 查看详情

设置模式之-门面模式-心得随笔

...方法封装到一个方法中,方便使用接口的人调用,这就是门面模式也可以是完成一个功能需要调用很多接口,然后把这些接口再封一层,封成一个接口,对外暴露  查看详情

gof23种设计模式之门面模式和装饰器模式

查看详情

结构性设计模式之门面模式(代码片段)

@TOC门面模式概述应用场景为复杂的模块或子系统提供外界访问的模块。子系统相对独立。预防额外操作带来的风险。目的优缺点优点:减少系统相互依赖。提高灵活性。提高安全性。缺点:不符合开闭原则,如果要改东西很麻... 查看详情

java设计模式之外观模式(门面模式)

...并向客户端提供了一个可以访问系统的接口。这种类型的设计模式属于结构性模式。为子系统中的一组接口提供了一个统一的访问接口,这个接口使得子系统更容易被访问或者使用。 二、角色及使用场景  简单来说,该模... 查看详情

python设计模式---结构型之门面模式(代码片段)

门面,系统,客户端~fromdjango.testimportTestCaseclassHotelier:def__init__(self):print(‘ArrangingtheHotelforMarriage?---‘)def_is_available(self):print(‘IstheHotelfreefortheeventongivendat?‘)returnTruedefbook_ho 查看详情

门面模式

...义门面模式(FacadePattern)也叫做外观模式,是一种比较常用的封装模式,其定义如下:Provideaunifiedinterfacetoasetofinterfacesinasubsystem.Facadedefinesahigher-levelinterfacethatmakesthesubsystemeasiertouse.(要求一个子系统的外部与其内部的通信必须... 查看详情

java设计模式之外观模式(门面模式)

...并向客户端提供了一个可以访问系统的接口。这种类型的设计模式属于结构性模式。为子系统中的一组接口提供了一个统一的访问接口,这个接口使得子系统更容易被访问或者使用。 二、角色及使用场景  简单来说,该模... 查看详情

java设计模式之门面模式(代码片段)

...个高层接口,让子系统更容易使用,属于结构型设计模式使用场景:为一个复杂的模式或者子系统提供一个简洁的供外界访问的接口希望提高子系统的独立性时当子系统由于不可避免的暂时原因导致可能存在BUG或者性... 查看详情

java设计模式之门面模式(代码片段)

...个高层接口,让子系统更容易使用,属于结构型设计模式使用场景:为一个复杂的模式或者子系统提供一个简洁的供外界访问的接口希望提高子系统的独立性时当子系统由于不可避免的暂时原因导致可能存在BUG或者性... 查看详情

设计模式之门面模式(代码片段)

设计模式之门面模式  门面模式(FacadePattern)也叫外观模式,是一种常见的封装模式,定义:Provideaunifiedinterfacetoasetofinterfacesinasubsystem.Facadedefinesahigher-levelinterfacethatmakesthesubsystemeasiertouse.(要求一个子系统的外部与其内... 查看详情

java设计模式之门面模式(外观模式)

医院的例子  现代的软件系统都是比较复杂的,设计师处理复杂系统的一个常见方法便是将其“分而治之”,把一个系统划分为几个较小的子系统。如果把医院作为一个子系统,按照部门职能,这个系统可以划分为挂号、门诊... 查看详情

设计模式门面模式

1、定义1.1标准定义门面模式(FacadePattern)也叫做外观模式,是一种比较常用的封装模式,其定义如下:Provideaunifiedinterfacetoasetofinterfacesinasubsystem.Facadedefinesahigher-level interfacethatmakesthesubsystemeasiertouse.(要求一个子系统的外部... 查看详情

设计模式之门面(外观)

医院的例子  现代的软件系统都是比较复杂的,设计师处理复杂系统的一个常见方法便是将其“分而治之”,把一个系统划分为几个较小的子系统。如果把医院作为一个子系统,按照部门职能,这个系统可以划分为挂号... 查看详情

设计模式之门面模式(代码片段)

门面模式一:门面模式概述在现实世界中,外墙都在我们身边。操作系统就是这样一个例子-您没有看到计算机的所有内部工作方式,但操作系统提供了使用机器的简化界面。简而言之,门面模式旨在使事物看起来更清洁,更容... 查看详情

java设计模式之门面模式(代码片段)

...个高层接口,让子系统更容易使用,属于结构型设计模式使用场景:为一个复杂的模式或者子系统提供一个简洁的供外界访问的接口希望提高子系统的独立性时当子系统由于不可避免的暂时原因导致可能存在BUG或者性... 查看详情

(转)java设计模式之门面模式(外观模式)

医院的例子  现代的软件系统都是比较复杂的,设计师处理复杂系统的一个常见方法便是将其“分而治之”,把一个系统划分为几个较小的子系统。如果把医院作为一个子系统,按照部门职能,这个系统可以划... 查看详情