大纲:
- 概述
- 实现
一、概述
简介:外观模式是一种结构性模式,他为客户端提供了一个简便的访问接口即外观。客户只要和这个外观打交道,屏蔽了系统内部的复杂性。
角色:外观模式由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(); } }