zoukankan      html  css  js  c++  java
  • 大话设计模式:外观模式

    外观模式:新增一个类,这个类当作客户端和真正系统之间的桥梁,客户端通过类实习那对系统的调用。

                      是最小知道原则的具体实现,如果两个类必须通信,要借助第三方类。

                      相当于客户端和真正系统的通信员,负责他们之间交互。

    A是未使用外观模式前,客户端和子系统交互

    B是使用外观模式后,外观类当作客户端和子系统的桥梁,负责他们之间通信。

    现在模拟喝茶动作,我们可以自己泡茶和去茶馆两个不同的选择,自己泡茶相当与没有使用外观模式,,去茶馆facade就相当于服务员使用到外观模式。

    在未使用外观模式前:子系统ABC,对应

    public class SubSystemA
    {
        public void MethodA()
        {
            System.out.println("准备茶具");
        }
    }
    
    public class SubSystemB
    {
        public void MethodB()
        {
            System.out.println("准备开水");
        }
    }
    
    public class SubSystemC
    {
        public void MethodC()
        {
            System.out.println("准备泡茶");
        }
    }
    public class Main {
        public static void main(String[] args) {
            SubSystemA a = new SubSystemA();
            SubSystemB b = new SubSystemB();
            SubSystemC c = new SubSystemC();
            a.MethodA();
            b.MethodB();
            c.MethodC();
        }
    }

    我们看到,这样挺简单的,但忽略一个问题,当我们有多个客户端多个客户端都会有这段代码,但如果子系统方法改变怎么办,所有系统都需要改,这不符合我们的要求,使用外观模式就可以很好的解决这个问题。

  • 相关阅读:
    字符串的比较方法---Java
    [模板]二进制枚举
    [唯一分解定理]感谢ZLY讲解
    [数学] 小数点后第n位
    [模板]二维前缀和
    [模板]欧拉函数及其应用
    [51nod] 1024 矩阵中不重复的元素
    Codeforces Round #521 (Div. 3) D. Cutting Out
    [差分] [POJ] 3276 Face The Right Way
    Educational Codeforces Round 54 (Rated for Div. 2) C. Meme Problem
  • 原文地址:https://www.cnblogs.com/dc-earl/p/10305673.html
Copyright © 2011-2022 走看看