意图
为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
就拿坦克来说,坦克有很多个部分组成,比如:轮子、引擎、外壳等等。把每一部分都用一个类表示,坦克的每种操作都需要各个部分共同工作。这样就可以把坦克看成是一个复杂的系统,而里的部件类就是它的子系统。在客户程序中只要调用坦克的操作就可以实现我们要的功能,很好的把复杂的东西包装起来,也减少了客户程序对内部子类的耦合。这样当复杂内部发生变化而不用修改客户程序。
Facade模式的优点
隐藏子系统的复杂性,简单化客户程序的使用。
internal class Wheel()
{
// 定义轮子的方法和属性等。
}
internal class Engine()
{
// 定义引擎的方法和属性等。
}
public class TankFacade
{
Wheel wheel = new Wheel();
Engine engine = new Engine();
public void Start()
{
// 坦克启动时,轮子、引擎要作些什么。
}
public void Stop()
{
// 坦克停止时,轮子、引擎要作些什么。
}
public void Run()
{
// 坦克跑动时,轮子、引擎要作些什么。
}
public void Shot()
{
// 坦克射击时,轮子、引擎要作些什么。
}
}



