1、外观模式(Facade),为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层
接口,这个接口使得这一子系统更加容易使用。
2、外观模式结构图及基本代码
基本代码
class Program
{
static void Main(string[] args)
{
Facade facade = new Facade();
facade .MethodA ();
facade.MethodB ();
Console.Read();
}
}
//四个系统的类
class SubSystemOne
{
public void MethodOne()
{
Console.WriteLine("子系统方法一");
}
}
class SubSystemTwo
{
public void MethodTwo()
{
Console.WriteLine("子系统方法二");
}
}
class SubSytemThree
{
public void MethodThree()
{
Console.WriteLine("子系统方法三");
}
}
class SubSytemFour
{
public void MethodFour()
{
Console.WriteLine("子系统方法四");
}
}
//外观类
class Facade
{
SubSystemOne one;
SubSystemTwo two;
SubSytemThree three;
SubSytemFour four;
public Facade()
{
one = new SubSystemOne();
two=new SubSystemTwo ();
three = new SubSytemThree();
four = new SubSytemFour();
}
public void MethodA()
{
Console.WriteLine("\n方法组A()----");
one.MethodOne ();
two.MethodTwo ();
four.MethodFour ();
}
public void MethodB()
{
Console.WriteLine("\n方法组B()----");
two.MethodTwo();
three.MethodThree();
}
}
3、何时使用外观模式
首先,在设计初期阶段,应该要有意识的将不同的两个层分离,层与层中间建立外观Facade。
其次,在开发阶段,子系统往往因为不断的重构演化而来变得越来越复杂,增加外观Facade
可以提供一个简单的接口,减少他们之间的依赖。
第三,在维护一个遗留的大型系统时,可能这个系统已经非常难以维护和扩展。为新系统开
发一个外观Facade类,来提供设计粗糙或高度复杂的遗留代码的比较清晰简单的接口,让新系统
与Facade对象交互,Facade与遗留代码交互所有复杂的工作。
4、Facade模式的个性要点
从客户程序的角度看,Facade模式不仅简化了整个组件系统的接口,同事对于组件内部与外部客户程序来说,从某种程度上也达到了一种“解耦”的效果------内部子系统的任何变化不会影响到Facade接口的变化