大纲:

  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();
}
}

研磨设计模式学习笔记2--外观模式Facade的更多相关文章

  1. 设计模式学习系列9 外观模式Facade

    1.概述 自己卖了一辆越野自行车,但毕竟不是自己定制的,买回来之后可能需要更改一下脚蹬,座皮,里程计数器或者刹车系统,假如将自行车看做一个整体系统,对我们而言使用的是自行车,然后我们对自己车构件的修改 ...

  2. 研磨设计模式学习笔记4--单例模式Signleton

    需求:加载配置文件,由于配置文件全局唯一,所以不用过多对象,建一个就可以了. 优点:单例模式本质就是为了控制实例数目. 一.饿汉式 public class Singleton { private S ...

  3. 研磨设计模式学习笔记3--适配器模式Adapter

    需求:制作一个日志管理系统,分为2个版本,第一版制作一个将日志存在本地文件的管理系统,第二版制作一个存储在数据库的管理系统,同时,第二版兼容第一版. 优点:可以复用现有功能,无需重新开发. 一.第一版 ...

  4. 设计模式(九)外观模式Facade(结构型)

    设计模式(九)外观模式Facade(结构型) 1. 概述 外观模式,我们通过外观的包装,使应用程序只能看到外观对象,而不会看到具体的细节对象,这样无疑会降低应用程序的复杂度,并且提高了程序的可维护性. ...

  5. 设计模式(二)-- 外观模式(Facade)

    设计模式(二) 外观模式(Facade) 为了解决子系统外部的客户端在使用子系统的时候,既能简单地使用这些子系统内部的模块功能,而又不用客户端去与子系统内部的多个模块交互的问题. 为子系统中的一组接口 ...

  6. 【转】设计模式(九)外观模式Facade(结构型)

    设计模式--外观模式Facade(结构型): 1. 概述 外观模式,我们通过外观的包装,使应用程序只能看到外观对象,而不会看到具体的细节对象,这样无疑会降低应用程序的复杂度,并且提高了程序的可维护性. ...

  7. 设计模式学习笔记--备忘录(Mamento)模式

    写在模式学习之前 什么是设计模式:在我们进行程序设计时,逐渐形成了一些典型问题和问题的解决方式,这就是软件模式:每个模式描写叙述了一个在我们程序设计中常常发生的问题,以及该问题的解决方式:当我们碰到模 ...

  8. (转载)设计模式学习笔记(十一)——Facade外观模式

    (转载)http://www.cnblogs.com/kid-li/archive/2006/07/10/446904.html Facade外观模式,是一种结构型模式,它主要解决的问题是:组件的客户 ...

  9. 《Head First 设计模式》学习笔记——适配器模式 + 外观模式

    在ADO.NET中.对于我们从数据库中取出的数据都要放到一个DataSet中,无论你是Access的数据库,还是SQL的数据库,或者是Oracle的数据库都要放到DataSet中..NET中并没有提供 ...

随机推荐

  1. PDF的一些工具

    PdfStreamDumper Pdftk 这里有一个链接,列出了很多pdf免费工具 https://en.wikipedia.org/wiki/Category:Free_PDF_software ...

  2. 算法Sedgewick第四版-第1章基础-016一list

    import java.util.Iterator; import java.util.NoSuchElementException; public class List<Item> im ...

  3. R: 一页显示多张图的方法

    ################################################### 问题:一页多图显示   18.4.30 怎么实现,在一页上画多幅图,并且安排图的大小.个数等?? ...

  4. 带参宏定义和inline修饰的内联函数

    带参宏定义和inline修饰的内联函数都是在编译时,用函数体替换掉宏调用或函数调用.这样用的好处是减少调用函数所花费的时间. 例如: 算法导论在讲到堆排序时说的,好的堆排序实现一般是把Left(i), ...

  5. myql 服务启动不了怎么办

    今天,不小心手动将mysql 服务停掉后,怎么也启动不了,后面查了半天 ,终于知道要先将任务管理器里的mysql.exe 先Kill掉,然后可以启动了,记录一下

  6. Object detection with deep learning and OpenCV

    目录 Single Shot Detectors for Object Detection Deep learning-based object detection with OpenCV   这篇文 ...

  7. 缩点【洛谷P2860】 [USACO06JAN]冗余路径Redundant Paths

    P2860 [USACO06JAN]冗余路径Redundant Paths 为了从F(1≤F≤5000)个草场中的一个走到另一个,贝茜和她的同伴们有时不得不路过一些她们讨厌的可怕的树.奶牛们已经厌倦了 ...

  8. DP【洛谷P2134】 百日旅行

    [洛谷P2134] 百日旅行 题目背景 重要的不是去哪里,而是和你在一起.--小红 对小明和小红来说,2014年7月29日是一个美好的日子.这一天是他们相识100天的纪念日. (小明:小红,感谢你2场 ...

  9. tftp简单文件传输协议搭建

    TFTP 简单文件传输协议     安装     sudo apt-get install tftp  tftpd openbsd-inetd     需要tftp tftpd openbsd-ine ...

  10. arcgis打印服务

    <script>    function print1() {        require([               "esri/map",           ...