# 外观模式

属于结构型模式。
隐藏系统的复杂性,并向客户端提供易于使用的接口。

使用场景:

  1. 设计初期阶段,应该要有意识的将不同的两个层分离(比如经典的三层架构,就需要考虑在数据访问层、业务逻辑层、表示层之间建立外观类)
  2. 在开发阶段,子系统往往因为不断的重构演化而变得越来越复杂,增加外观类可以减少他们之间的依赖
  3. 在维护一个遗留的大型系统时,可能这个系统已经非常难以维护和扩展了,但是新的需求开发必须要依赖它。此时就可以为新系统开发一个外观类,可以让外观类与遗留代码交互所有复杂的工作

# 类图

img

# 代码

# 创建一个类作为例子

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

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

Maikire 微信支付

微信支付

Maikire 支付宝

支付宝

Maikire 贝宝

贝宝