设计模式<结构型> | 外观模式

外观模式/门面模式(Facade Pattern)

门面模式为子系统提供一组统一的接口,定义一组高层接口让子系统更易用。

假设有一个系统 A,提供了 a、b、c、d 四个接口。系统 B 完成某个业务功能,需要调用 A 系统的 a、b、d 接口。利用门面模式,我们提供一个包裹 a、b、d 接口调用的门面接口 x,给系统 B 直接使用

门面模式可以用来封装系统的底层实现,隐藏系统的复杂性,提供一组更加简单易用、更高层的接口。

结构图:

角色:

  1. 子系统(SubSystem):各种子系统。
  2. 门面(Facade):提供了访问特定子系统功能的便捷方式。

适用场景:

  1. 封装有缺陷的接口设计。
  2. 替换依赖的外部系统。
  3. 兼容老版本接口
  4. 适配不同格式的数据

优点:

  1. 隐藏系统的复杂性

缺点

  1. 门片类过于臃肿,依赖的类太多。

代码(Facade Pattern)

1
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
public class InterfaceA
{
public void SayHello()
{
Console.Write("A");
}
}

public class InterfaceB
{
public void SayHello()
{
Console.Write("B");
}
}

public class InterfaceC
{
public void SayHello()
{
Console.Write("C");
}
}


/// <summary>
/// 模式
/// </summary>
public class Facade
{
private InterfaceA _a;
private InterfaceB _b;

public Facade()
{
_a = new InterfaceA();
_b = new InterfaceB();
}

public void SayHello()
{
_a.SayHello();
_b.SayHello();
}
}

var x = new Facade();
x.SayHello();

最后

适配器模式和门面模式的共同点是,将不好用的接口适配成好用的接口。但是门面模式适用在接口设计方面,解决多接口调用问题,适配器模式是一种补偿措施,补偿的是接口设计缺陷。从功能上,门面模式注重易用性,适配器模式注重兼容性。


设计模式<结构型> | 外观模式
http://example.com/posts/38121.html
作者
她微笑的脸y
发布于
2023年3月2日
许可协议