zoukankan      html  css  js  c++  java
  • 设计模式之 外观模式

    外观模式将多个子系统及其之间的复杂关系和调用流程封装到一个统一的接口或类中以对外提供服务。

    image

    示例:

    image

    (1)定义子系统

    public class DashBoard{
        private final static Log logger = LogFactory.getLog(this.getClass());
        public void startup(){
            logger.info("dashboard startup......");
        }
    
        public void shutdown(){
            logger.info("dashboard shutdown......");
        }
    }
    
    public class Engine{
        private final static Log logger = LogFactory.getLog(this.getClass());
        public void startup(){
            logger.info("engine startup......");
        }
    
        public void shutdown(){
            logger.info("engine shutdown......");
        }
    }
    
    public class SelfCheck{
        private final static Log logger = LogFactory.getLog(this.getClass());
        public void startupCheck(){
            logger.info("startup check");
        }
    
        public void shutdown(){
            logger.info("shutdown check finished");
        }
    }

    (2)定义门面类

    public class Starter{
        private final static Log logger = LogFactory.getLog(this.getClass());
        private DashBoard dashBoard;
        private Engine engine;
        private SelfCheck selfCheck;
        public Starter(){
            this.dashBoard = new DashBoard();
            this.engine = new Engine();
            this.selfCheck = new SelfCheck();
        }
    
        public void startup(){
            logger.info("car begin startup");
            engine.startup();
            dashBoard.startup();
            selfCheck.startupCheck();
            logger.info("car startup finished");
        }
    
        public void shutdown(){
            logger.info("car begin shutdown");
            engine.shutdown();
            dashBoard.shutdown();
            selfCheck.shutdown();
            logger.info("car shutdown finished");
        }
    }

    (3)使用外观模式

    public static void main(String[] args){
        Starter starter = new Starter();
        starter.startup();
        starter.shutdown();
    }

  • 相关阅读:
    怎样查看Oracle的数据库名称sid
    request.getRemoteAddr request.getRemoteHost()
    Oracle中添加自动编号的序列
    google chrome 快捷键
    MyEclipse快捷键大全( 再排版)
    Java正则表达式应用详解
    Spring3.1 Cache注解
    Java本周总结1.
    jquery ui 自动补全
    用字符串的length实现限制文本框长度
  • 原文地址:https://www.cnblogs.com/betterwgo/p/15229901.html
Copyright © 2011-2022 走看看