外观模式本质:

封装交互,简化调用
demo:下面使用外观模式写一个简单的代码生成器
将要创建的类:
ConfigModel:配置描述的数据model
ConfigManager:配置管理
Presentation:表现层的模块
Business:逻辑层的代码
Dao:数据层的模块
Facade:组装模块
Client:消费者

@Data
public class ConfigModel {/*** 是否需要生成表现成,默认是true*/private boolean needGenPresentation = true;/*** 是否需要生成逻辑层,默认是true*/private boolean needGenBusiness = true;/*** 是否需要生成Dao,默认是true*/private boolean needGenDao = true;}
public class ConfigManager {private static ConfigManager manager = null;private static ConfigModel cm = null;public ConfigManager() {}public static ConfigManager getInstance(){if(manager == null){manager = new ConfigManager();cm = new ConfigModel();// 读取配置文件, 把值设置到ConfigModel中去,这里省略}return manager;}/*** 获取配置的数据* @return*/public ConfigModel getConfigData(){return cm;}
}
public class Presentation {public void generate(){// 从配置管理里面获取相应的配置信息ConfigModel cm = ConfigManager.getInstance().getConfigData();if(cm.isNeedGenPresentation()){// 按照要求去生成对应的代码,并保存成文件System.out.println("正在生成表现层代码文件");}}
}
public class Business {public void generate(){ConfigModel cm = ConfigManager.getInstance().getConfigData();if(cm.isNeedGenBusiness()){System.out.println("生成逻辑层代码文件");}}
}
public class Dao {public void generate(){ConfigModel cm = ConfigManager.getInstance().getConfigData();if(cm.isNeedGenDao()){System.out.println("生成数据库层代码文件");}}
}
public class Facade {public void generate(){new Presentation().generate();new Business().generate();new Dao().generate();}
}
public class Client {public static void main(String[] args) {new Facade().generate();}
}

外观模式的优点:

松散耦合
简单易用
更好地划分访问的层次

外观模式的缺点:

过多的或者不太合理的Facade容易让人迷惑,到底是调用Facade还是直接调用方法本身呢。

何时选择外观模式:

1、如果你希望为一个复杂的子系统提供一个简单接口的时候,可以考虑使用外观模式。
2、如果想要让客户程序和抽象类的实现部分松散耦合,可以考虑使用外观模式。
3、如果构建多层结构的系统,可以考虑使用外观模式。

研磨设计模式--外观模式相关推荐

  1. 2.进阶--研磨设计模式----外观模式

    1.外观模式: 作用或者优点: 为某个系统的组合功能提供一个外层,也就是客户端使用系统的某个组合功能(需要与多个子模块交互)时候,可以通过提供一个外层,来避免客户端对子模块复杂的调用,简化了客户端的使 ...

  2. Python设计模式-外观模式

    Python设计模式-外观模式 代码基于3.5.2,代码如下; #coding:utf-8 # 外观模式class AlarmSensor:def run(self):print("Alar ...

  3. 设计模式--------外观模式

    设计模式--------外观模式 介绍外观模式的四大问题 现在的写法有什么问题吗? 为什么要用外观模式? 什么是外观模式? 外观模式有什么好处? 使用一个例子进行问题的说明 假如要制作一个智能系统,要 ...

  4. [设计模式]外观模式

    1. 定义 外观模式 提供了一个统一的接口,用来访问子系统中的一群接口.外观定义了一个高层接口,让子系统更加容易使用. 外观不仅简化了系统内接口的使用,也将客户从组件中的子系统中解耦,外观和适配器都可 ...

  5. Java设计模式---外观模式

    外观模式(Facade) 外观模式的意图是:为子系统提供一个接口,便于它的使用. 解释: 简单的说,外观模式就是封装多个上层应用需要的方法,使得上层调用变得简单,为上层提供简单的接口,是设计模式中一种 ...

  6. Java 设计模式——外观模式

    概述 今天要说的外观模式是一个相对简单的设计模式,而且在日常的开发中,可能你也会时常使用它,只是你可能并未想过这是一个设计模式.本文会从一些实例着手,来对本文要说明的外观模式进行尽可能全面的讲解.希望 ...

  7. Java设计模式-外观模式

    我又来了,继Java设计模式之桥接模式后,现在来到了外观模式啦,外观模式又称为门面模式啦

  8. 大话设计模式—外观模式

    外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口.这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性. 这种模式涉及 ...

  9. 设计模式 外观模式 一键电影模式

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/25837275 这个模式比较简单,嘿嘿,简单写一下. 老样子,先看 外观模式(Fa ...

  10. 8. 设计模式 外观模式 一键电影模式

    这个模式比较简单,嘿嘿,简单写一下. 老样子,先看 外观模式(Facade Pattern)定义:提供一个统一的接口,用来访问子系统中的一群接口,外观定义了一个高层的接口,让子系统更容易使用.其实就是 ...

最新文章

  1. ABP官方文档翻译 6.1.2 MVC视图
  2. Linux/Unix环境下的make和makefile详解
  3. 基于单片机的调光控制器设计
  4. xy坐标正负方向_道路施工图纸上x坐标和y坐标分别代表什么方向,哪个代表南北方向,哪个代表东西方向?...
  5. 你还在为文件读写而烦恼?Python已经轻松帮你解决了(建议收藏)
  6. Java学习小程序(7)九九乘法表
  7. Django之序列化
  8. 数据结构思维 第十七章 排序
  9. java print int_java – 在printin输入int
  10. braft的LogEntry日志记录存储LogStorage
  11. dll放在unity哪个文件夹下_unity调用C#dll文件
  12. python使用rpa需要什么插件_使用Python制作ArcGIS插件基础篇——工具介绍
  13. VC里面的钩子程序HOOK
  14. 京东店铺怎么运营 掌握这些京东运营知识很有必要!
  15. module ‘cv2‘ has no attribute ‘face‘已安装仍报错解决
  16. nacos配置中心提示com.alibaba.nacos.shaded.io.grpc.StatusRuntimeException: UNAVAILABLE: io exceptio
  17. 动态规划C++实现--换钱的方法数(二)(动态规划及其改进方法)
  18. Android播放音频到耳机,Android音乐播放模式切换-外放、听筒、耳机
  19. 【原创】Mac电脑如何开启Aptx
  20. 接口测试神器,它来了,它带着光环走来了

热门文章

  1. EIGRP协议的配置
  2. 新华三计算机网络题,计算机等考试三网络技术模拟试题及答案(二)云南新华电脑学校.doc...
  3. 北风网android,北风网JAVA/ASP.NET/Android系列公开课视频教程入门项目必学课程
  4. 简单的Python少儿编程
  5. 黑客入门教程(非常详细)从零基础入门到精通,看完这一篇就够了。
  6. python 生成testbench_(Testbench用法总结)1. Testbench中文本数据的存储读取操作对比
  7. 【MFC自绘窗口】 窗口设计第一课
  8. 单片机的c语言程序控制直流电机,(单片机控制直流电机)毕业论文.doc
  9. 计算机室 多媒体教室制度,多媒体教室计算机室规章制度.doc
  10. php源码 乱码 通达oa_PHPOA源码中小企业OA办公系统流程ERP CRM HR微信钉钉泛微通达oa...