门面模式要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行. 门面模式提供一个高层次的接口, 使得子系统更易于使用.
类图如下
ModuleA
public class ModuleA
{
public void Func1()
{
Console.WriteLine("Func1 in ModuleA");
}
}
ModuleB
public class ModuleB
{
public void Func2()
{
Console.WriteLine("Func2 in ModuleB");
}
}
ModuleC
public class ModuleC
{
public void Func3()
{
Console.WriteLine("Func3 in ModuleC");
}
}
Facade
public class Facade
{
public void Func()
{
var modulea = new ModuleA();
var moduleb = new ModuleB();
var modulec = new ModuleC();
modulea.Func1();
moduleb.Func2();
modulec.Func3();
}
}
调用
static void Main(string[] args)
{
Facade facade = new Facade();
facade.Func();
}
优点:
- 简化各个模块使用
- 由对子系统的依赖变为对Facade类的依赖,子系统的变化不需要通知调用方
- 增加子系统的安全性,客户端只能通过Facade使用
缺点:
- 不遵守开闭原则,子系统修改时需要更新Facade相关代码
源代码地址: 点击我下载 提取码: ewrt