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

一、基本概念

    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 }
View Code

        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 }
View Code
 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 }
View Code
 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 }
View Code

        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 }
View Code

运行结果

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

三、总结

      门面模式比较简单。

猜你喜欢

转载自www.cnblogs.com/fating/p/12563442.html
今日推荐