外观:
外观就是给予我们视觉上的最直接的感受,是指形状、图案、色彩或其结合;
形状是指三维产品的造型,如电视机、小汽车的外形。图案一般是指两维的平面设计,如床单、地毯的图案等。色彩可以是构成图案的成分,也可以是构成形状的部分。
外观模式:外观模式就像一个外观设计师,将那些混乱的形状,图案、色彩拼装成美丽的图画。让后将这美丽的图画展现在我们的面前。
现实联想:
就像这Windows系统,我想Windows系统之所以会风靡全球就是因为他是Windows窗口。他简单漂亮,他的使用简单方便,不用客户知道这个当他点击这个图标的时候,它的功能是怎么实现的,客户只需要知道点击这个图标之后,Windows将会实现什么功能就行了。
总结
在这里外观模式跟Windows界面有类似的功能,外观模式将所有的子功能中的部分子功能结合在一起,然后形成一个实现特定功能的方法。当然外观模式可以根据需求对子功能进行任意组合,以形成满足需求的新方法。
何时考虑使用外观模式?
1、当我们的代码需要分层的时候,我们就要考虑外观模式,在层与层之间建立一个外观类,这样能有效减少层与层之间的耦合。
2、在系统的开发阶段因为子系统的不断重构演化而变得越来越复杂。同时大多数的模式的使用还会产生很多小的类,这样就会让我们对类的调用会很困难。
3、在维护一个遗留的大型的系统时,可能这个系统已经非常难以维护和扩张,这样使用外观模式可以使新系统与旧系统之间间接交互。
第一步书写子系统方法
class subSystemOne
{
public void Methdone()
{
Console.WriteLine("子系统方法一");
}
}
class subSystemTow
{
public void Methodtwo()
{
Console.WriteLine("子系统方法二");
}
}
class subSystemThree
{
public void MethodThree()
{
Console.WriteLine("子系统方法三");
}
}
class subSystemFour
{
public void MethodFour()
{
Console.WriteLine("子系统方法四");
}
}
第二步书写外观类,建立子系统方法组合接口
class Facade
{
subSystemOne one;
subSystemTow tow;
subSystemThree three;
subSystemFour four;
public Facade ()
{
one = new subSystemOne() ;
tow = new subSystemTow ();
three = new subSystemThree();
four = new subSystemFour();
}
public void MethodA()
{
Console.WriteLine("方法组一");
one.Methdone();
tow.Methodtwo();
three.MethodThree();
}
public void MethodB()
{
Console.WriteLine("方法组二");
tow.Methodtwo();
four.MethodFour();
}
}
第三步客户端调用
class Program
{
static void Main(string[] args)
{
Facade facade = new Facade();
facade.MethodA();
facade.MethodB();
Console.ReadKey();
}
}