C#设计模式之外观模式介绍


在C#中,外观模式(Facade Pattern)是一种结构型设计模式,它为子系统中的一组接口提供一个统一的接口。外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。它主要用于降低系统复杂度,增加系统的可维护性,同时也降低了客户端与子系统之间的耦合度。

### 外观模式的主要角色

1. **Facade(外观角色)**:

- 外观角色为客户端提供一个统一的接口,用于访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。

- 外观模式并不实现任何业务逻辑,它仅仅是子系统与客户端之间的桥梁。

2. **SubSystem Classes(子系统角色)**:

- 它们是现有的类,实现了系统的功能。对于客户端而言,这些子系统是隐藏的,它们仅仅通过Facade角色来访问。

### 示例代码

以下是一个简单的C#示例,展示了外观模式的使用。


// 子系统类A
public class SubSystemA
{
    public void OperationA()
    {
        Console.WriteLine("Subsystem A: Doing work A");
    }
}

// 子系统类B
public class SubSystemB
{
    public void OperationB()
    {
        Console.WriteLine("Subsystem B: Doing work B");
    }
}

// 外观类
public class Facade
{
    private SubSystemA subSystemA = new SubSystemA();
    private SubSystemB subSystemB = new SubSystemB();

    // 为客户端提供一个统一的方法来访问子系统
    public void PerformTask()
    {
        subSystemA.OperationA();
        subSystemB.OperationB();
        // 可以添加更多的逻辑来组合子系统的操作
    }
}

// 客户端代码
class Program
{
    static void Main(string[] args)
    {
        Facade facade = new Facade();
        facade.PerformTask(); // 客户端通过Facade来调用子系统的方法
    }
}

在这个例子中,`Facade`类为`SubSystemA`和`SubSystemB`提供了一个统一的接口`PerformTask`,客户端通过调用这个接口来间接地调用子系统的方法,而不需要直接与子系统打交道。这样做简化了客户端与子系统之间的交互,同时也降低了客户端与子系统之间的耦合度。