zoukankan      html  css  js  c++  java
  • 第十一讲、外观模式

    1.定义

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

    2.外观模式的结构

       

    3.外观模式的角色和职责

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

    4.代码演示

    package test.com.facade;
    /*
     * A子系统
     */
    public class SystemA {
        /*
         * A子系统实现功能
         */
        public void dosomething() {
            System.out.println("实现A子系统功能");
        }
    }
    package test.com.facade;
    /*
     * B子系统
     */
    public class SystemB {
        /*
         * B子系统实现功能
         */
        public void dosomething() {
            System.out.println("实现B子系统功能");
        }
    }
    package test.com.facade;
    /*
     * C子系统
     */
    public class SystemC {
        /*
         * C子系统实现功能
         */
        public void dosomething() {
            System.out.println("实现C子系统功能");
        }
    }
    package test.com.facade;
    /*
     * Facade--只对外提供具体的功能实现
     */
    public class Facade {
        private SystemA systemA;
        private SystemB systemB;
        private SystemC systemC;
        
        public Facade() {
            this.systemA = new SystemA();
            this.systemB = new SystemB();
            this.systemC = new SystemC();
        }
        
        public void doA() {
            this.systemA.dosomething();
        }
        
        public void doAB() {
            this.systemA.dosomething();
            this.systemB.dosomething();
        }
        
        public void doABC() {
            this.systemA.dosomething();
            this.systemB.dosomething();
            this.systemC.dosomething();
        }
    }
    package test.com.facade;
    /*
     * 测试代码
     */
    public class Main {
        public static void main(String[] args) {
            Facade facade = new Facade();
            facade.doA();
            System.out.println("**********");
            facade.doAB();
            System.out.println("**********");
            facade.doABC();
            System.out.println("**********");
        }
    }
  • 相关阅读:
    java核心学习(八) 枚举类
    java核心学习(七) 内部类、匿名内部类、Lambda表达式
    算法-快速排序
    java核心学习(六) 面向接口编程
    java核心学习(五) 修饰符(重点是static、final)
    java 核心学习笔记(四) 单例类
    贪心 zoj3197
    贪心 poj3045
    三分 POJ3737
    浮点数二分答案 HDU1969
  • 原文地址:https://www.cnblogs.com/zheaven/p/10058447.html
Copyright © 2011-2022 走看看