定义:
为子系统中的一组接口提供一个统一的界面,这个模式定义一个高层的接口,从而使得子系统更加容易使用。
外观模式结构图:
外观模式示例代码:
-
public class SubSystem1
-
{
-
public void Method1()
-
{
-
Console.WriteLine("This is class 1");
-
}
-
}
-
-
public class SubSystem2
-
{
-
public void Method2()
-
{
-
Console.WriteLine("This is class 2");
-
}
-
}
-
-
public class SubSystem3
-
{
-
public void Method3()
-
{
-
Console.WriteLine("This is class 3");
-
}
-
}
-
-
public class SubSystem4
-
{
-
public void Method4()
-
{
-
Console.WriteLine("This is class 4");
-
}
-
}
-
-
public class Facada
-
{
-
private readonly SubSystem1 _subSystem1;
-
private readonly SubSystem2 _subSystem2;
-
private readonly SubSystem3 _subSystem3;
-
private readonly SubSystem4 _subSystem4;
-
-
public Facada()
-
{
-
_subSystem1 = new SubSystem1();
-
_subSystem2 = new SubSystem2();
-
_subSystem3 = new SubSystem3();
-
_subSystem4 = new SubSystem4();
-
}
-
-
public void MethodA()
-
{
-
Console.WriteLine("Method group A:");
-
_subSystem1.Method1();
-
_subSystem2.Method2();
-
}
-
-
public void MethodB()
-
{
-
Console.WriteLine("Method groupB:");
-
_subSystem3.Method3();
-
_subSystem4.Method4();
-
}
-
}
客户端代码:
-
class Program
-
{
-
static void Main(string[] args)
-
{
-
Facada facada = new Facada();
-
facada.MethodA();
-
facada.MethodB();
-
}
-
}
外观模式的使用场合:
1: 在设计初期,要有意识地将各个层分开。在经典的三层架构中,各个层之间要有方便访问的Facada
2: 在开发阶段,子系统由于重构而变得越来越复杂。会产生比较多的小类,这对于调用来说是很不方便的,通过外观Facada提供一个简单的调用接口,减少各个类之间的依赖。
3: 在维护一个遗留的大系统时,这个类以及很难维护和扩展了。为新系统开发一个Facada,让Facada与遗留的代码交互。
阅读(2114) | 评论(0) | 转发(0) |