zoukankan      html  css  js  c++  java
  • 北风设计模式课程---15、外观模式

    北风设计模式课程---15、外观模式

    一、总结

    一句话总结:

    不仅要通过视频学,还要看别的博客里面的介绍,搜讲解,搜作用,搜实例
    设计模式都是对生活的抽象,比如用户获得装备,我可以先装备工厂先生产出来装备,然后给宗门武器库,宗门武器库发给我,如果是打怪获得的装备,可以是装备工厂把装备给的怪物装备库

    1、外观模式的最大好处是什么?

    客户端不需要知道具体调用哪个子系统,直接交给中间层即可,客户端直接调用中间层

    2、外观模式的核心是什么?

    中间层:提供一个中间层,来提供和客户端以及底层之间的调用,这样客户端不必知道底层如何实现

    3、什么是外观模式?

    一致的简单的界面:Facade模式为一组具有类似功能的类群,比如类库,子系统等等,提供一个一致的简单的界面。

    Facade模式也叫外观模式,是由GoF提出的
    23种设计模式中的一种。Facade模式为一组具
    有类似功能的类群,比如类库,子系统等等,提
    供一个一致的简单的界面。这个一致的简单的界
    面被称作facade。

    4、外观模式的角色和职责?

    Facade:为调用方定义简单的调用接口。
    Clients:调用者。通过Facade接口调用提供某功能的内部类群。
    Packages:功能提供者。指提供功能的类群(模块或子系统)。

    5、外观模式 中的 参考代码 角色实例?

    Facade:Facade.java
    Clients:MainClass.java、MainClass2.java
    Packages:SystemA.java、SystemB.java、SystemC.java

    二、内容在总结中

    1、相关知识

    Facade:Facade.java
    Clients:MainClass.java、MainClass2.java
    Packages:SystemA.java、SystemB.java、SystemC.java

    2、代码

    Facade:Facade.java

    public class Facade {
        private SystemA systemA;
        private SystemB systemB;
        private SystemC systemC;
        
        public Facade() {
            systemA = new SystemA();
            systemB = new SystemB();
            systemC = new SystemC();
        }
        
        public void doABC() {
            this.systemA.doSomething();
            this.systemB.doSomething();
            this.systemC.doSomething();
        }
        
        public void doAB() {
            this.systemA.doSomething();
            this.systemB.doSomething();
        }
    }


    Clients:MainClass.java

    public class MainClass {
        public static void main(String[] args) {
            Facade facade = new Facade();
            facade.doABC();
        }
    }

    Clients:MainClass2.java

    public class MainClass2 {
        public static void main(String[] args) {
            Facade facade = new Facade();
            facade.doAB();
        }
    }


    Packages:SystemA.java

    /*
     * A子系统
     */
    public class SystemA {
        /*
         * A子系统实现功能
         */
        public void doSomething() {
            System.out.println("实现A子系统功能");
        }
    }

    Packages:SystemB.java

    /*
     * B子系统
     */
    public class SystemB {
    
        /*
         * B子系统实现功能
         */
        public void doSomething() {
            System.out.println("实现B子系统功能");
        }
    }

    Packages:SystemC.java

    /*
     * C子系统
     */
    public class SystemC {
    
        /*
         * C子系统实现功能
         */
        public void doSomething() {
            System.out.println("实现C子系统功能");
        }
    }
     
  • 相关阅读:
    Yii2的相关学习记录,后台模板和gii(三)
    Yii2的相关学习记录,初始化Yii2(二)
    Yii2的相关学习记录,下载Yii2(一)
    虚拟机上网总结
    纯Java实现微信朋友圈分享图
    【集合框架】JDK1.8源码分析之ArrayList详解(一)
    Java中字符串相加和字符串常量相加区别
    onTouchEvent中,跟随手指滑动的view出现抖动
    Android CHM文件阅读器
    CHM格式
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/11031158.html
Copyright © 2011-2022 走看看