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子系统功能");
        }
    }
     
  • 相关阅读:
    HDU 6071
    HDU 6073
    HDU 2124 Repair the Wall(贪心)
    HDU 2037 今年暑假不AC(贪心)
    HDU 1257 最少拦截系统(贪心)
    HDU 1789 Doing Homework again(贪心)
    HDU 1009 FatMouse' Trade(贪心)
    HDU 2216 Game III(BFS)
    HDU 1509 Windows Message Queue(队列)
    HDU 1081 To The Max(动态规划)
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/11031158.html
Copyright © 2011-2022 走看看