zoukankan      html  css  js  c++  java
  • 结构型---外观模式(Facade Pattern)

    定义

    外观模式提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。使用外观模式时,我们创建了一个统一的类,用来包装子系统中一个或多个复杂的类,客户端可以直接通过外观类来调用内部子系统中方法,从而外观模式让客户和子系统之间避免了紧耦合。

    外观模式代码:

     /// <summary>
        /// 子系统A
        /// </summary>
        public class ClassA
        {
            public void doSomethingA()
            {
                //业务逻辑
            }
        }
        /// <summary>
        /// 子系统B
        /// </summary>
        public class ClassB
        {
            public void doSomethingB()
            {
                //业务逻辑
            }
        }
        /// <summary>
        /// 子系统C
        /// </summary>
        public class ClassC
        {
            public void doSomethingC()
            {
                //业务逻辑
            }
        }
        /// <summary>
        /// 门面对象
        /// </summary>
        public class Facade
        {
            private ClassA a = new ClassA();
            private ClassB b = new ClassB();
            private ClassC c = new ClassC();
            //提供给外部访问的方法
            public void mothodA()
            {
                this.a.doSomethingA();
            }
            public void mothodB()
            {
                this.b.doSomethingB();
            }
            public void mothodC()
            {
                this.c.doSomethingC();
            }
        }
    View Code

    外观的优缺点

    优点:

    1. 外观模式对客户屏蔽了子系统组件,从而简化了接口,减少了客户处理的对象数目并使子系统的使用更加简单。
    2. 外观模式实现了子系统与客户之间的松耦合关系,而子系统内部的功能组件是紧耦合的。松耦合使得子系统的组件变化不会影响到它的客户。

    缺点:

    1. 如果增加新的子系统可能需要修改外观类或客户端的源代码,这样就违背了”开——闭原则“(不过这点也是不可避免)。

    使用场景

     在以下情况下可以考虑使用外观模式:

    • 外一个复杂的子系统提供一个简单的接口
    • 提供子系统的独立性
    • 在层次化结构中,可以使用外观模式定义系统中每一层的入口。其中三层架构就是这样的一个例子
  • 相关阅读:
    SpringCloud教程第10篇:高可用的服务注册中心(F版本)
    SpringCloud教程第9篇:Sleuth(F版本)
    requests.session保持会话
    Jmeter Constant Throughput Timer 使用
    Jmeter提取响应数据的结果保存到本地的一个文件
    练习2
    练习1
    一道简单的练习题
    Maven下org.junit.Test无法使用
    [转]解决pycharm无法导入本地包的问题(Unresolved reference 'tutorial')
  • 原文地址:https://www.cnblogs.com/scmail81/p/8685696.html
Copyright © 2011-2022 走看看