# 外观模式
属于结构型模式。
隐藏系统的复杂性,并向客户端提供易于使用的接口。
使用场景:
- 设计初期阶段,应该要有意识的将不同的两个层分离(比如经典的三层架构,就需要考虑在数据访问层、业务逻辑层、表示层之间建立外观类)
- 在开发阶段,子系统往往因为不断的重构演化而变得越来越复杂,增加外观类可以减少他们之间的依赖
- 在维护一个遗留的大型系统时,可能这个系统已经非常难以维护和扩展了,但是新的需求开发必须要依赖它。此时就可以为新系统开发一个外观类,可以让外观类与遗留代码交互所有复杂的工作
# 类图
# 代码
# 创建一个类作为例子
namespace StructuralPattern_FacadePattern | |
{ | |
/// <summary> | |
/// 形状 | |
/// </summary> | |
public class Shape | |
{ | |
public void MyShape_0() | |
{ | |
Console.WriteLine("MyShape_0"); | |
} | |
public void MyShape_1() | |
{ | |
Console.WriteLine("MyShape_1"); | |
} | |
} | |
} |
# 外观类
namespace StructuralPattern_FacadePattern | |
{ | |
/// <summary> | |
/// Shape 类 的 外观类 | |
/// </summary> | |
public class ShapeFacade | |
{ | |
private Shape MainShape; | |
public ShapeFacade() | |
{ | |
MainShape = new Shape(); | |
} | |
/// <summary> | |
/// 对 Shape 类中的方法进行封装 | |
/// </summary> | |
public void GetShape() | |
{ | |
Console.WriteLine("ShapeFacade"); | |
MainShape.MyShape_0(); | |
MainShape.MyShape_1(); | |
} | |
} | |
} |
# 测试
namespace StructuralPattern_FacadePattern | |
{ | |
public class Program | |
{ | |
private static void Main() | |
{ | |
new ShapeFacade().GetShape(); | |
} | |
} | |
} |
运行结果:
ShapeFacade
MyShape_0
MyShape_1