• 第十一讲、外观模式


    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("**********");
        }
    }
  • 相关阅读:
    Linux学习笔记(第一章)
    C#中的抽象类有什么好处?究竟它是用来干事什么的呢?
    C#中的 增 、删、 改、 查功能
    在Visual C#中用ListView显示数据记录
    10.14JDBC之数据库连接池之C3P0
    10.19JDBC之使用C3P0连接池重新实现JDBCUtils方法
    10.12JDBC之DAO实现类的优化
    10.13JDBC之数据库连接池
    RhinoMock入门(3)——4种Mock类型
    wse说谈(3)——策略,用户令牌
  • 原文地址:https://www.cnblogs.com/zheaven/p/10058447.html
Copyright © 2020-2023  润新知