zoukankan      html  css  js  c++  java
  • 研磨设计模式学习笔记2外观模式Facade

    大纲:

    1. 概述
    2. 实现

    一、概述

    简介:外观模式是一种结构性模式,他为客户端提供了一个简便的访问接口即外观。客户只要和这个外观打交道,屏蔽了系统内部的复杂性。

    角色:外观模式由2个角色,1是外观、2是子系统。

    使用:客户想执行多个子系统的操作,为了简化客户的操作,我们提供一个外观,这个外观只有一个入口,客户只根据需求配置自己调用哪些子系统即可。

    二、实现

    2.1配置管理

    //配置
    public class ConfigModel {
        private boolean isNeedPresentation;
        private boolean isNeedDao;
        private boolean isNeedBuss;
    }
    //配置管理
    public class ConfigManager {
        private static ConfigManager configManager = null;
        private static ConfigModel configModel = null;
        public static ConfigManager getConfigManager(){
            if(configManager==null){
                configManager = new ConfigManager();
                configModel = new ConfigModel();
    
                //这里可以根据客户端提供的配置文件进行控制
                configModel.setNeedBuss(true);
                configModel.setNeedDao(true);
                configModel.setNeedPresentation(true);
            }
            return configManager;
        }
        public static ConfigModel getConfigModel(){
            return configModel;
        }
    }

    2.2子系统内部模块(核心模块):

    public class Dao {
        public void generate(){
            ConfigModel  model = ConfigManager.getConfigManager().getConfigModel();//子模块根据配置文件选择执行与否。
            if(model.isNeedDao()){
                System.out.println("generate Dao");
            }
        }
    }
    
    public class Bussiness {
        public void generate(){
            ConfigModel  model = ConfigManager.getConfigManager().getConfigModel();
            if(model.isNeedBuss()){
                System.out.println("generate Bussiness");
            }
        }
    }
    
    public class Presentation {
        public void generate(){
            ConfigModel  model = ConfigManager.getConfigManager().getConfigModel();
            if(model.isNeedPresentation()){
                System.out.println("generate presentation");
            }
        }
    }

    2.3外观(核心模块):外观就是客户端看系统,仅仅能看到系统提供给客户端的接口,外观隐藏了所有细节

    public class Facade {
        public static void generate(){
            new Dao().generate();
            new Presentation().generate();
            new Bussiness().generate();
        }
    }

    2.4客户端

    public class Client {
        public static void main(String[] args) {
            Facade.generate();
        }
    }
  • 相关阅读:
    样式表练习
    表单的制作
    PHP课后感
    eclipse中项目改名
    Windows下关闭占用指定端口应用程序的方法
    ftp上传不成功,提示501 invalid character in command错误
    分割字符串取最后一部分
    toString()方法之使用
    访问FTP服务器方法
    eclipse中svn检出项目,项目名上带有红色感叹号
  • 原文地址:https://www.cnblogs.com/liuboyuan/p/9603424.html
Copyright © 2011-2022 走看看