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

独孤九戒 独孤九戒     2022-12-09     721

关键词:

设计模式之门面模式

    门面模式(Facade Pattern)也叫外观模式,是一种常见的封装模式,定义:Provide a unified interface to a set of interfaces in a subsystem. Facade defines a higher-level interface that makes the subsystem easier to use.(要求一个子系统的外部与其内部的通信必须通过统一的对象进行。门面模式提供一个高层次的接口,使子系统更易于使用)

    门面模式注重“统一的对象”,也就是提供一个访问子系统的接口,除了这个接口不允许有任何访问子系统的行为发生。

通用类图


    Subsystem Classes是子系统所有类的简称,可能代表一个类,也可能代表几十个对象的集合。简单地说,门面对象是外界访问子系统内部的唯一通道,不管系统内部多么复杂,只要门面对象在,就可以做到“金玉其外败絮其中”。

两个角色

1.Facade门面角色,客户端可以调用这个角色的方法,此角色知晓子系统的所有功能和责任。一般情况下,本角色会将所有从客户端发来的请求委派到相应的子系统中,也就是说该角色没有实际的业务逻辑,只是一个委托类;

2.subsystem子系统角色,可以同时拥有一个或多个子系统,每一个子系统不是一个单独的类,而是一个类的集合,子系统并不知道门面的存在。对呀子系统而言,门面仅仅是另外一个客户端而已。

通用源码

子系统

public class ClassA 
	public void doSomethingA()
		
	
public class ClassB 
	public void doSomethingB()
		
	

public class ClassC 
	public void doSomethingC()
		
	

门面对象

public class Facade 
	private ClassA a=new ClassA();
	private ClassB b=new ClassB();
	private ClassC c=new ClassC();
	
	public void methodA()
		this.a.doSomethingA();
	
	public void methodB()
		this.b.doSomethingB();
	
	public void methodC()
		this.c.doSomethingC();
	

门面模式的优点:

1.减少系统的相互依赖,所有的依赖都是对门面的依赖,与子系统无关;

2.提高了灵活性,依赖减少了,灵活性自然提高,不管子系统内部如何变化,只要不影响到门面对象,可随意活动;

3.提高安全性,不在门面上开通的方法,客户端不能访问。

门面模式缺点

不符合开闭原则,对修改关闭,对扩展开放。

门面模式使用场景

1.为一个复杂的模块或子系统提供一个供外界访问的接口;

2.子系统相对独立,外界对子系统的访问只要黑箱操作即可;

3,。预防低水平人员带来的风险扩散。

例子:信件投递全过程

写信过程接口

public interface ILetterProcess 
	public void writeContext(String context);
	public void fillEnvelope(String address);
	public void letterInotoEnvelope();
	public void sendLetter();

写信过程实现

public class LetterProcessImpl implements ILetterProcess
	public void writeContext(String context)
		System.out.println("信的内容:"+context);
	
	public void fillEnvelope(String address)
		System.out.println("信的地址:"+address);
	
	public void letterInotoEnvelope()
		System.out.println("装入信封");
	
	public void sendLetter()
		System.out.println("投递");
	

现代邮局

public class MordenPostOffice 
	private ILetterProcess letterProcess=new LetterProcessImpl();
	public void sendLetter(String context,String address)
		letterProcess.writeContext(context);
		letterProcess.fillEnvelope(address);
		letterProcess.letterInotoEnvelope();
		letterProcess.sendLetter();
	

场景类

public class Client 

	public static void main(String[] args) 
		// TODO Auto-generated method stub
		MordenPostOffice postOffice=new MordenPostOffice();
		String adress="nanannananna";
		String context="happy birthday";
		postOffice.sendLetter(context, adress);
	


邮件检查类

public class Police 
	public void checkLetter(ILetterProcess letterProcess)
		System.out.println("检查信件");
	

场景类

public class MordenPostOffice 
	private ILetterProcess letterProcess=new LetterProcessImpl();
	private Police letterPolice=new Police();
	public void sendLetter(String context,String address)
		letterProcess.writeContext(context);
		letterProcess.fillEnvelope(address);
		letterPolice.checkLetter(letterProcess);
		letterProcess.letterInotoEnvelope();
		letterProcess.sendLetter();
	





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

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

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

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

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

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

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

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

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

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

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

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

设计模式之门面模式20170728

结构型设计模式之门面模式:一、含义门面模式也叫做外观模式,是一种比较常用的封装模式,其定义如下:要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行,门面模式提供一个高层次的接口,使得子系统更... 查看详情

常用设计模式之门面模式

门面模式也可以叫做外观模式 为子系统或者模块中的一组接口提供一个一致的访问方式,此模式定义了一个高层接口,这个接口使得各个子系统/模块中的功能 更加容易使用。 实际应用中,我们在对付一些老旧的代码或者即便... 查看详情

设计模式之外观模式(代码片段)

  外观模式又叫门面模式,在平时的开发中使用的极其的频繁但是却非常的简单。使用外观模式可以让客户端轻松的调用复杂的系统接口,因为客户端根本不关心子系统的内部是如何实现的,他们只需要调用门面类提供的... 查看详情

外观模式(门面模式)(代码片段)

//飞机publicclassPlanepublicvoidbuyTicket()System.out.println("订购飞机票");//火车publicclassTrainpublicvoidbuyTicket()System.out.println("订购火车票");//景点publicclassScenerypublicvoidbuyTicket()System.ou 查看详情

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

定义一个子系统的外部与内部的通信必须通过一个统一的对象进行。门面模式提高一个高层次的接口,使得子系统更易实现。门面对象就是一个提供外部访问子系统的一个接口,除了这个接口不允许有任何访问子系统的行为发生... 查看详情

headfirst设计模式之门面模式

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

门面模式结构模式(代码片段)

门面模式Provideaunifiedinterfacetoasetofinterfacesinasubsystem.Facadedefinesahigher-levelinterfacethatmakesthesubsystemeasiertouse.为子系统中的一组接口提供一个统一的访问接口。门面定义了一个更高级的接口,使得子系统更容易使用。publicclassFacade/***门... 查看详情

外观模式(门面模式)(代码片段)

文章目录外观模式(门面模式)示例相关的设计模式使用典范参考外观模式(门面模式)定义:它为子系统中的一组接口提供一个统一的高层接口。这一接口使得子系统更加容易使用类型:结构型适用场景... 查看详情

设计模式系列--门面模式(代码片段)

定义门面模式又叫外观模式,祖的组词提供了一个统一的接口,用来访问子系统中的一群接口。门面模式定义了一个高层接口,简化了调用过程,无需深入了解子系统,以防给子系统带来风险;减少系统依赖、松散耦合;更好的... 查看详情

2.泡妞与设计模式外观模式(代码片段)

FACADE门面(外观)模式门面模式:外部与一个子系统的通信必须通过一个统一的门面对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。每一个子系统只有一个门面类,而且此门面类只有一个实例,也就是说它... 查看详情

设计模式之-外观模式(facadepattern)(代码片段)

外观模式外观模式(FacadePattern):外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式又称为... 查看详情

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

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