1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Threading.Tasks;
6
7 namespace DesignPattern.StructuralPattern
8 {
9 #region 外观模式要点
10 //定义:提供统一的接口,用来访问一系列子系统。
11 //接口保存客户端所需访问的子系统的引用,将客户端的请求重定向到目标子系统
12 //主要是为了客户端与多个子系统的解耦,依赖的对象越多客户端就越不稳定
13 //通过只与外观类交互,会大大减少客户端改变的原因,子系统的扩展或改变不会影响到客户端。
14 //应用:分层结构中,可以作为不同层子系统的入口
15 #endregion
16 public class FacadePattern
17 {
18 SubsystemOne _subsystemOne = null;
19 SubsystemTwo _subsystemTwo = null;
20 //自己创建子系统,也可以由外部作为构造函数参数传入
21 public FacadePattern()
22 {
23 _subsystemOne = new SubsystemOne();
24 _subsystemTwo = new SubsystemTwo();
25 }
26
27 public void Operation()
28 {
29 if (_subsystemOne != null && _subsystemTwo != null)
30 {
31 _subsystemOne.OperationOne();
32 _subsystemTwo.OperationTwo();
33 }
34 }
35 }
36
37 public class SubsystemOne
38 {
39 public void OperationOne()
40 {
41
42 Console.WriteLine("OperationOne start");
43 }
44
45 }
46 public class SubsystemTwo
47 {
48 public void OperationTwo()
49 {
50
51 Console.WriteLine("OperationTwo start");
52 }
53 }
54
55
56 public class Client
57 {
58 public void Operation(FacadePattern facadePattern)
59 {
60 facadePattern.Operation();
61 }
62 }
63 }