设计模式 之 创建型模式 <五> 外观模式(Facade Pattern ) --深入浅出

 角色:

(1) Facade(外观角色):在客户端可以调用它的方法,在外观角色中可以知道相关的(一个 或者多个)子系统的功能和责任;

                                          在正常情况下,它将所有从客户端发来的请求委派到相应 的子系统去,传递给相应的子系统对象处理。

(2) SubSystem(子系统角色):在软件系统中可以有一个或者多个子系统角色,每一个子系统 可以不是一个单独的类,而是一个类的集合,它实现子系统的功能;

                                                    每一个子系统都可以被 客户端直接调用,或者被外观角色调用,它处理由外观类传过来的请求;子系统并不知道外 观的存在,对于子系统而言,外观角色仅仅是另外一个客户端而已。

 

 

 1  
 2 class SubSystemA { 
 3 
 4     public void MethodA() { //业务实现代码 } 
 5 
 6 }
 7 
 8 class SubSystemB { 
 9 
10     public void MethodB() { //业务实现代码 } 
11 
12 } 
13 
14 class SubSystemC { 
15 
16     public void MethodC() { //业务实现代码 }
17 
18  } 
19 
20 
21 //在引入外观类之后,与子系统业务类之间的交互统一由外观类来完成,在外观类中通常存在 如下代码:
22 
23 
24  class Facade {
25 
26       private SubSystemA obj1 = new SubSystemA();
27       private SubSystemB obj2 = new SubSystemB();
28       private SubSystemC obj3 = new SubSystemC();
29 
30       public void Method() { 
31             obj1.MethodA(); 
32             obj2.MethodB(); 
33             obj3.MethodC();
34      } 
35    }
36 
37  // 由于在外观类中维持了对子系统对象的引用,客户端可以通过外观类来间接调用子系统对象 的业务方法,而无须与子系统对象直接交互。引入外观类后,客户端代码变得非常简单,典型代码如下:
38 
39  class Program { 
40 
41       static void Main(string[] args) {
42            Facade facade = new Facade();
43            facade.Method();
44          }
45     }

 

posted @ 2020-08-08 15:33  zp007  阅读(115)  评论(0编辑  收藏  举报