23种设计模式----外观模式(Facade Pattern)

外观模式主要解决的问题:当有多个类要处理时,需要一个个类去调用,没有复用性和扩展性。外观模式将处理子类的过程封装成操作,简化客户端的调用过程。

23种设计模式----外观模式(Facade Pattern)_第1张图片

public class SubSystemOne
{
    public void MethodOne()
    {
        Console.WriteLine(" SubSystemOne Method");
    }
}

public class SubSystemTwo
{
    public void MethodTwo()
    {
        Console.WriteLine(" SubSystemTwo Method");
    }
}

public class SubSystemThree
{
    public void MethodThree()
    {
        Console.WriteLine(" SubSystemThree Method");
    }
}

public class SubSystemFour
{
    public void MethodFour()
    {
        Console.WriteLine(" SubSystemFour Method");
    }
}

public class Facade
{
    private SubSystemOne _one;
    private SubSystemTwo _two;
    private SubSystemThree _three;
    private SubSystemFour _four;

    public Facade()
    {
        _one = new SubSystemOne();
        _two = new SubSystemTwo();
        _three = new SubSystemThree();
        _four = new SubSystemFour();
    }

    public void MethodA()
    {
        Console.WriteLine("\nMethodA() ---- ");
        _one.MethodOne();
        _two.MethodTwo();
        _four.MethodFour();
    }

    public void MethodB()
    {
        Console.WriteLine("\nMethodB() ---- ");
        _two.MethodTwo();
        _three.MethodThree();
    }
}

class Program
{
    static void Main(string[] args)
    {
        Facade facade = new Facade();

        facade.MethodA();
        facade.MethodB();
    }
}

从上例中可以看出,可以在客户端中使用子系统中的内容,即外观模式并没有把子系统和客户端隔离开来,只是提供了整洁的接口给客户端,如果客户端想访问复杂子系统中的接口时还是一样的可以访问的。

你可能感兴趣的:(7种结构性设计模式)