zoukankan      html  css  js  c++  java
  • 设计模式(第十一式:外观模式)

    概念:

      外观模式:要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。外观模式提供一个高层次的接口使得子系统更容易使用。看着概念好像很唬人的,看到代码,你会觉得过于简单,没意思。

    实现:

      规定子系统

    public class NovelBook {
        public void read(){
            System.out.println("小说可以阅读");
        }
    }
    public class ToolBook {
        public void use(){
            System.out.println("阅读小说需要查工具书");
        }
    }

      对外实现

    public class Book {
        NovelBook novelBook = new NovelBook();
        ToolBook toolBook = new ToolBook();
        
        public void read(){
            novelBook.read();
            toolBook.use();
        }
    }


    分析:
      1.这么简单的,我觉得没有必要在写测试和结果了。大概说一下,就是本来如果用到工具书和小说,我们需要分别创建对象,但现在,只需要创建Book对象就可以了。相当于封装了流程在其中。
      2.这个设计模式的好处就式,外部使用时不需要清楚知道内部之间时是怎样的逻辑关系,对外的封装,会负责逻辑顺序。简化了外部使用。
      3.这样做的好处是,减少了类与类之间更多的依赖关系,也更易于逻辑上的维护。但不利于修改内部逻辑顺序,也就是如果逻辑顺序发生变化,只能重写新的逻辑,不能灵活调整逻辑顺序。当然也可以不封装逻辑,只做聚合。
      4.举个例子理解一下,去快餐店买快餐,店铺通常只提供一个收银口和取餐口,你不知道人家里面是怎么处理的。反正就是交了钱等饭就好了,这就是外观模式。
      5.适用场景:
        a.对于固有逻辑的封装,比如报警系统的通知服务
        b.有大量类存在依赖关系,可使用外观模式,也可以选择不对逻辑封装
        ...

  • 相关阅读:
    asking邱宝裕
    一文深度解读量化交易(下)
    一文深度解读量化交易(上)
    关于日内波段交易系统:一个期货高手的交易思路独白
    财务报表分析(张新民教授)-第一章笔记
    定增游戏(二)
    leetcode -- Restore IP Addresses
    leetcode -- Minimum Window Substring
    leetcode -- Maximal Rectangle TODO O(N)
    leetcode -- Unique Binary Search Trees II
  • 原文地址:https://www.cnblogs.com/ben-mario/p/10911453.html
Copyright © 2011-2022 走看看