C# 设计模式-外观模式

一.介绍  

  外观模式(Facade Pattern),也叫门面模式。属于结构型模式。为子系统中的一系列接口提供一个一致的界面,该模式提供了一个高层接口,这个接口使得这一子系统更加容易使用。

二.实现

  外观模式是通过定义一个外观类将子类包装起来,来简化客户端所调用的方法。

/// <summary>
/// 外观类
/// </summary>
public class Facade
{

    SubSystemA a = new SubSystemA();
    SubSystemB b = new SubSystemB();
    SubSystemC c = new SubSystemC();

    public void MethodA()
    {
        a.MethodA();
        b.MethodB();
    }

    public void MethodB()
    {
        b.MethodB();
        c.MethodC();
        a.MethodA();
    }
}

public class SubSystemA
{
    public void MethodA()
    {
        Console.WriteLine("SubSystemA.MethodA");
    }
}

public class SubSystemB
{
    public void MethodB()
    {
        Console.WriteLine("SubSystemB.MethodB");
    }
}

public class SubSystemC
{
    public void MethodC()
    {
        Console.WriteLine("SubSystemC.MethodC");
    }
}

//调用
public static void Main(string[] args)
{
    Facade facade = new Facade();
    facade.MethodA();
    facade.MethodB();
}

  使用了外观模式后,客户端只需要依赖外观类,使得客户端和子系统的依赖解耦。其实我们在开发过程中,都会使用过外观模式,比如三层架构就是其中一个例子。

三.总结

  优点:

  1.外观模式对客户端屏蔽了子系统组件,从而简化了接口,减少了客户处理的对象数目并使得子系统的使用更加简单。

  2.外观模式实现了客户端和子系统之间的松耦合关系,而子系统内部的组件是紧耦合的。松耦合使得子系统的组件变化不会影响到客户端。

  缺点:

  1.如果新增新的子系统可能需要修改外观类,这就不符合开闭原则,不过这也是没法避免的。

原文地址:https://www.cnblogs.com/shadoll/p/14296487.html