3 Façade模式
3.1 概述
又称外观模式。这个模式是现实中很常见到的一种模式,比如汽车的设计,汽车里面是很复杂的,但是开汽车是很简单的,为什么?因为汽车设计人员把汽车的复杂部分“封装”在汽车里面,只提供很简单易用的方向盘、刹车和加油给你控制汽车。这就是Façade模式,我们需要一个更简单的方式使用一个复杂的东西,并可满足我们的需要。
3.2 设计
那么如何能简单的使用一个复杂的东西呢?只需要这个复杂的东西提供我所需的功能就行了。比如,汽车向前行驶对汽车本身是一个很复杂的系统,要抽汽油燃烧,通过引擎形成动力,再通过承轴传到轮胎上,使轮胎滚动,从而使汽车前进。如果我们开车需要去控制汽车内部的这些部件的运转的话,估计没人能学会开车。那么怎么办?很简单,汽车提供一个功能——加油,我们只要脚踏油门,汽车就会前进。这样,大家都能很容易学会开车了。

3.3 实现
UML图:
无
示例代码为:
1
using System;
2
3
namespace Example
4
{
5
/// <summary>
6
/// 示例
7
/// </summary>
8
class Example
9
{
10
/// <summary>
11
/// 应用程序的主入口点。
12
/// </summary>
13
[STAThread]
14
static void Main(string[] args)
15
{
16
UseCar useCar = new UseCar() ;
17
useCar.Drive() ;//开车
18
}
19
/// <summary>
20
/// 复杂的汽车
21
/// </summary>
22
public class Car
23
{
24
public Car() {}
25
26
public void Oil()
27
{
28
Console.WriteLine( "加油到引擎中……" ) ;
29
}
30
public void Motor()
31
{
32
Console.WriteLine( "发动引擎……" ) ;
33
}
34
public void Transmission()
35
{
36
Console.WriteLine( "动力传动中……" ) ;
37
}
38
public void Tire()
39
{
40
Console.WriteLine( "轮胎转动中……" ) ;
41
}
42
//其他方法……
43
}
44
/// <summary>
45
/// 使用汽车
46
/// </summary>
47
/// <remarks>
48
/// 使用Facade模式,用一个简单的功能(Drive)封装了汽车内部的复杂动作(Oil、Motor……)
49
/// 使用者只使用这个简单功能(Drive)就可满足控制汽车前进的需求
50
/// </remarks>
51
public class UseCar
52
{
53
public UseCar() {}
54
55
public void Drive()
56
{
57
Console.WriteLine( "准备开车!" ) ;
58
Car car = new Car() ;
59
car.Oil() ;
60
car.Motor() ;
61
car.Transmission() ;
62
car.Tire() ;
63
Console.WriteLine( "汽车行驶中!" ) ;
64
}
65
}
66
}
67
}
68

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68
