设计模式--结构模式--门面模式

一、基本概念

1、外观模式(Facade),也被称为"门面模式"。定义了一个高层、统一的接口,外部通过这个统一的接口对子系统中的一群接口进行访问。

2、角色

A:外观(Facade)角色:为多个子系统对外提供一个共同的接口。

B:子系统(Sub System)角色:实现系统的部分功能,客户可以通过外观角色访问它。

C:客户(Client)角色:通过一个外观角色访问各个子系统的功能。

二、例子。

分诊台作为患者和医生的装饰。

A:外观(Facade)角色:

 1 package comm.pattern.struct.facade;
 2
 3 /**
 4  *
 5  * @Title: TriageFacade.java
 6  * @Package: comm.pattern.struct.facade
 7  * @Description: 分诊台门面
 8  * @author yangzhancheng
 9  * @2020年3月25日:上午12:21:29
10  *
11  */
12 public class TriageFacade {
13
14     private WaitF waitF = new WaitF();
15
16     private CallF callF = new CallF();
17
18     private DoctorF doctorF = new DoctorF();
19
20     public void service(){
21         waitF.service();
22
23         callF.service();
24
25         doctorF.service();
26     }
27 }

B:子系统(Sub System)角色:

 1 package comm.pattern.struct.facade;
 2
 3 /**
 4  *
 5  * @Title: WaitF.java
 6  * @Package: comm.pattern.struct.facade
 7  * @Description: 病人排号,各种操作
 8  * @author yangzhancheng
 9  * @2020年3月25日:上午12:16:42
10  *
11  */
12 public class WaitF {
13
14     public void service(){
15         System.out.println("01.病人排号等待...");
16     }
17 }

 1 package comm.pattern.struct.facade;
 2
 3 /**
 4  *
 5  * @Title: CallF.java
 6  * @Package: comm.pattern.struct.facade
 7  * @Description: 描述该文件做什么
 8  * @author yangzhancheng
 9  * @2020年3月25日:上午12:17:53
10  *
11  */
12 public class CallF {
13
14     public void service(){
15         System.out.println("02.叫号...");
16     }
17
18 }

 1 package comm.pattern.struct.facade;
 2
 3 /**
 4  *
 5  * @Title: DoctorF.java
 6  * @Package: comm.pattern.struct.facade
 7  * @Description: 描述该文件做什么
 8  * @author yangzhancheng
 9  * @2020年3月25日:上午12:18:42
10  *
11  */
12 public class DoctorF {
13
14     public void service(){
15         System.out.println("03.医生看病...");
16     }
17 }

C:客户(Client)角色:

 1 package comm.pattern.struct.facade;
 2 /**
 3  *
 4  * @Title: Client.java
 5  * @Package: comm.pattern.struct.facade
 6  * @Description: 描述该文件做什么
 7  * @author yangzhancheng
 8  * @2020年3月25日:上午12:02:40
 9  *
10  */
11 public class Client {
12
13     public static void main(String[] args) {
14         TriageFacade triageFacade = new TriageFacade();
15         triageFacade.service();
16     }
17
18 }

运行结果

01.病人排号等待...
02.叫号...
03.医生看病...

三、总结

门面模式比较简单。

原文地址:https://www.cnblogs.com/fating/p/12563442.html

时间: 2024-10-03 05:34:23

设计模式--结构模式--门面模式的相关文章

外观模式 门面模式 Facade 创建型 设计模式(十三)

外观模式(FACADE) 又称为门面模式 意图 为子系统中的一组接口提供一个一致的界面 Facade模式定义了一个高层接口,这一接口使得这一子系统更加易于使用. 意图解析 随着项目的持续发展,系统基本上都是会往功能更全面的方向发展,那么也就意味着我们的系统将会变得更加复杂. 系统会被划分为多个单独的子系统,每个子系统完成一部分功能,通过分工协作完成全部功能. 一个子系统也可能进一步拆分为更小的几个子系统. 程序中的文件将会越来越多,相互关联也会变得更加复杂 当使用一个功能的时候,作为客户端 你需

大熊君说说JS与设计模式之(门面模式Facade)迪米特法则的救赎篇------(监狱的故事)

一,总体概要 1,笔者浅谈 说起“门面”这个设计模式其实不论新老程序猿都是在无意中就已经运用到此模式了,就像我们美丽的JS程序员一样不经意就使用了闭包处理问题, 1 function Employee(name) { 2 var name = name; 3 this.say = function () { 4 console.log("I am employee " + name) ; 5 } ; 6 } 代码中“say”是一个function,Employee也是一个functio

Java设计模式(四) Facade(门面)模式及Tomcat引申

基本概念 Facade的概念 为子系统中的一组接口提供一个统一接口.Facade模式定义了一个更高层的接口,使子系统更加容易使用. 我们需要以一种比原有方式更简单直接的办法与系统交互,对于讨论的复杂系统我们只有针对性地使用它的一个子集 因为Facade模式可以封装多个子系统,可以减少客户必须处理的对象的数量 要求一个子系统的外部与内部的通信必须通过一个统一的对象进行.也就是说Facade对象是外界对于子系统的唯一通道,可以用来整合内部杂乱无章的子系统,不管是否败絮其中,都能做到金玉其外 Faca

混合模式(策略模式+工厂方法模式+门面模式)

使用这三种模式设计一个简单的计算器程序:计算器是用于计算数值之间进行数学计算后所获得的值.它包含基本的"加减"功能.以上对以上需求进行分析可以得出计算有两种策略(+与-). 计算策略的实现: /*抽象策略*/public interface Strategy{ /*定义了计算策略所拥有的算法*/ public int calculate(int a,int b);} /*加法策略的实现*/public class AddStrategy implements Strategy{ @Ov

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

外观模式真是比单例模式还要简单了,毕竟单例还有八种写法 简介 外观模式(Facade),为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用 实例探究 假设一台电脑,它包含了 CPU(处理器),Memory(内存) ,Disk(硬盘)这几个部件,若想要启动电脑,则先后必须启动 CPU.Memory.Disk.关闭也是如此. 但是实际上我们在电脑开/关机时根本不需要去操作这些组件,因为电脑已经帮我们都处理好了,并隐藏了这些东西. 这些组件好比子系统角

外观模式(门面模式)

//飞机 public class Plane { public void buyTicket(){ System.out.println("订购飞机票"); } } //火车 public class Train { public void buyTicket(){ System.out.println("订购火车票"); } } //景点 public class Scenery { public void buyTicket(){ System.out.pri

java设计模式5.组合模式、门面模式、享元模式、桥接模式

组合模式 在面向对象的语言中,树结构有着巨大的威力,一个基于继承的类型的等级结构便是一个数结构,一个基于合成的对象结构也是一个数结构.组合模式将部分与整体的关系用树结构表示出来,使得客户端把一个个单独的成分对象和由它们组合而成的合成对象同等看待. 抽象构建角色:一个抽象角色,给参加组合的对象规定一个接口,这个接口给出共有的接口及默认行为. 树叶构建角色:代表参加组合的树叶对象,没有子对象,定义参加组合的原始对象行为. 树枝构建角色:代表参加组合的有子对象的对象,并给出树枝构件对象的行为. 对于子

设计模式之门面模式

门面模式 门面模式是把具体的实现放在自己内部,对外提供一个外观给外部去调用.让使用者可以很方便地使用它.这样可以做到内部的变更交给内部自己去处理,使得责任单一.也让我们的系统不需要暴露太多的细节给外部. 实例代码 public class User { private String name; private String password; public String getName() { return name; } public void setName(String name) { t

NET设计模式 第二部分 结构性模式(11):外观模式(Façade Pattern)

外观模式(Façade Pattern) ——.NET设计模式系列之十二 Terrylee,2006年3月 概述 在软件开发系统中,客户程序经常会与复杂系统的内部子系统之间产生耦合,而导致客户程序随着子系统的变化而变化.那么如何简化客户程序与子系统之间的交互接口?如何将复杂系统的内部子系统与客户程序之间的依赖解耦?这就是要说的Façade 模式. 意图 为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用.[GOF <设计模式>] 示意