设计模式(二)

外观模式(Facade)

为了解决子系统外部的客户端在使用子系统的时候,既能简单地使用这些子系统内部的模块功能,而又不用客户端去与子系统内部的多个模块交互的问题。

为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

外观模式就是通过引入一个外观类,在这个类里面定义客户端想要的简单的方法,然后在这些方法的实现里面,由外观类再去分别调用内部的多个模块来实现功能,从而让客户端变得简单。这样一来,客户端就只需要和外观类交互就可以了。

package Facade;

public classConfigModel {

private boolean needGenPresentation = true;

private boolean needGenBusiness = true;

private boolean needGenDAO = true;

public boolean isNeedGenPresentation(){

return needGenPresentation;

}

public boolean isNeedGenBusiness(){

return needGenBusiness;

}

public boolean isNeedGenDAO(){

return needGenDAO;

}

public void setNeedGenPresentation(boolean needGenPresentation){

this.needGenPresentation=needGenPresentation;

}

public void setNeedGenBusiness(boolean needGenBusiness){

this.needGenBusiness=needGenBusiness;

}

public void setNeedGenDAO(boolean needGenDAO){

this.needGenDAO=needGenDAO;

}

}

package Facade;

public classConfigManager {

private static ConfigManager manager = null;

private static ConfigModel cm = null;

private ConfigManager(){

//

}

public static ConfigManager getInstance(){

if(manager==null){

manager = new ConfigManager();

cm new ConfigModel();

}

return manager;

}

public ConfigModel getConfigDate(){

return cm;

}

}

package Facade;

public classPresentation {

public void generate(){

ConfigModel cm = ConfigManager.getInstance().getConfigDate();

if(cm.isNeedGenPresentation()){

System.out.println("Generate Presentation Layer");

}

}

}

package Facade;

public classBusiness {

public void generate(){

ConfigModel cm = ConfigManager.getInstance().getConfigDate();

if(cm.isNeedGenBusiness()){

System.out.println("Generate Business Layer");

}

}

}

package Facade;

public classDAO {

public void generate(){

ConfigModel cm = ConfigManager.getInstance().getConfigDate();

if(cm.isNeedGenDAO()){

System.out.println("Generate DAO Layer");

}

}

}

package Facade;

public classFacade {

publicvoidgenerate(){

new Presentation().generate();

new Business().generate();

new DAO().generate();

}

}

package Facade;

public classClient {

publicstaticvoidmain(String[] args){

new Facade().generate();

}

}

Output:

Generate Presentation Layer

Generate Business Layer

Generate DAO Layer

最新文章

  1. 安全测试 - CSRF攻击及防御
  2. 关于python函数的学习记录
  3. [.net 面向对象编程基础] (9) 类和类的实例
  4. C++输入输出流
  5. JavaScript 学习—— js获取行间样式和非行间样式
  6. Qt在VS2010的安装与配置
  7. 用原生javascript模拟经典FC游戏公路争霸
  8. HibernateTemplate的find(String querystring)返回值具体解释
  9. 快速构建Windows 8风格应用26-本地应用数据
  10. SuperSocket入门(一)-Telnet服务器和客户端请求处理
  11. latex lstlisting
  12. 【转载】Linux的inode的理解
  13. 前端面试题(5) 列举5种IE haslayout的属性及其值
  14. arduino与DS1302时钟调试失败的分析
  15. centos7安装较高版本python3.5/3.6
  16. 【问题与解决】showModalDialog is not defined 的解决方案
  17. GLSL传递数组
  18. 96A
  19. English-英语学习杂志及资料
  20. convert函数语法

热门文章

  1. XXX系统发展综述(SSH+Jquery EasyUI)
  2. oracle 非数字型转数字型
  3. 快速构建Windows 8风格应用1-开发工具安装及模拟器使用
  4. SQL点滴26—常见T-SQL面试解析
  5. SharePoint 2010 加入项目到用户/欢迎菜单
  6. javascript 学习总结(七)String对象
  7. scala lift环境搭建
  8. [转载]Android中WebView自适应屏幕
  9. php中使用随机数
  10. C#实现函数根据返回类型重载