研磨设计模式学习笔记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();
    }
}

 

posted @ 2018-09-07 11:12  扶不起的刘阿斗  阅读(156)  评论(0编辑  收藏  举报