设计模式--外观模式

2023-06-29 09:28:17 浏览数 (1)

外观模式是一种结构型设计模式,用于为一组复杂的子系统提供一个简单的接口。它隐藏了子系统的复杂性,并向客户端提供了一个简单的接口,使得客户端可以与子系统交互,而不用了解其内部的复杂逻辑。

下面是C#中外观模式的代码实例:

代码语言:javascript复制
// 定义一个子系统的接口
public interface ISubsystem
{
    void Method1();
    void Method2();
    // ...
}

// 实现子系统接口的具体类
public class Subsystem1 : ISubsystem
{
    public void Method1()
    {
        Console.WriteLine("调用 Subsystem1 的方法1");
    }

    public void Method2()
    {
        Console.WriteLine("调用 Subsystem1 的方法2");
    }
}

public class Subsystem2 : ISubsystem
{
    public void Method1()
    {
        Console.WriteLine("调用 Subsystem2 的方法1");
    }

    public void Method2()
    {
        Console.WriteLine("调用 Subsystem2 的方法2");
    }
}

// 定义外观类,它实现了子系统的接口,并提供简单的方法给客户端
public class Facade
{
    private readonly ISubsystem _subsystem1;
    private readonly ISubsystem _subsystem2;

    public Facade(ISubsystem subsystem1, ISubsystem subsystem2)
    {
        _subsystem1 = subsystem1;
        _subsystem2 = subsystem2;
    }

    public void Method()
    {
        _subsystem1.Method1();
        _subsystem1.Method2();
        _subsystem2.Method1();
        _subsystem2.Method2();
    }
}

// 客户端只需要和外观类交互即可
class Client
{
    static void Main()
    {
        var subsystem1 = new Subsystem1();
        var subsystem2 = new Subsystem2();
        var facade = new Facade(subsystem1, subsystem2);

        facade.Method();
    }
}

以上代码允许结果:

外观模式外观模式

在这个示例中,`Subsystem1`和`Subsystem2`都实现了`ISubsystem`接口。而`Facade`类通过聚合这两个子系统类,封装了它们的复杂性,并提供了一个简单的方法,给客户端直接使用。客户端只需要和`Facade`类交互即可,而不需要知道子系统的复杂逻辑。

【小结】

外观模式,大家在开发过程中肯定会用到,但有时没有察觉到。它也是降低耦合的一种思路。

0 人点赞