随着系统的不断改进和开发,它们会变得越来越复杂,系统会生成大量的类,这使得程序流程更难被理解。门面模式可为这些类提供一个简化的接口,从而简化访问这些类的复杂性。

门面模式(Facade)也被称为正面模式、外观模式,这种模式用于将一组复杂的类包装到一个简单的外部接口中。

 public interface LetterProcess {//首先要写信的内容public void writeContext(String context);//其次写信封public void fillEnvelope(String address);//把信放到信封里public void letterInotoEnvelope();//然后邮递public void sendLetter();}

写信过程的具体实现:

 public class LetterProcessImpl implements LetterProcess {//写信public void writeContext(String context) {System.out.println("填写信的内容...." + context);}//在信封上填写必要的信息public void fillEnvelope(String address) {System.out.println("填写收件人地址及姓名...." + address);}//把信放到信封中,并封好public void letterInotoEnvelope() {System.out.println("把信放到信封中....");}//塞到邮箱中,邮递public void sendLetter() {System.out.println("邮递信件...");}}
 public class ModenPostOffice {private LetterProcess letterProcess = new LetterProcessImpl();//写信,封装,投递,一体化了public void sendLetter(String context,String address){//帮你写信letterProcess.writeContext(context);//写好信封letterProcess.fillEnvelope(address);//把信放到信封中letterProcess.letterInotoEnvelope();//邮递信件letterProcess.sendLetter();}}

测试用例

 public class Client {public static void main(String[] args) {//现代化的邮局,有这项服务,邮局名称叫Hell RoadModenPostOffice hellRoadPostOffice = new ModenPostOffice();//你只要把信的内容和收信人地址给他,他会帮你完成一系列的工作;String address = "Happy Road No. 666,God Province,Heaven"; //定义一个地址String context = "Hello,It's me,do you know who I am? I'm your old lover.I'd like to....";hellRoadPostOffice.sendLetter(context, address);}}

门面模式讲解完毕,这是一个很好的封装方法,一个子系统比较复杂的实话,比如算法或者业务比较复杂,就可以封装出一个或多个门面出来,项目的结构简单,而且扩展性非常好。还有,在一个较大项目中的时候,为了避免人员带来的风险,也可以使用这个模式,技术水平比较差的成员,尽量安排独立的模块(Sub System), 然后把他写的程序封装到一个门面里,尽量让其他项目成员不用看到这些烂人的代码,看也看不懂,我也遇到过一个“高人”写的代码,private 方法、构造函数、常量基本都不用,你要一个public 方法,好,一个类里就一个 public 方法,所有代码都在里面,然后你就看吧,一大坨的程序,看着能把人逼疯,使用门面模式后,对门面进行单元测试,约束项目成员的代码质量,对项目整体质量的提升也是一个比较好的帮助。

常用的设计模式(七)——门面设计模式相关推荐

  1. 设计模式之门面设计模式

    一.理清门面 门面模式很简单而且我们就在使用,废话不多说直接上类图. 关注Client类和Facad类还有subsystem即可. OK,是不是觉得似曾相识,哈哈一会解答.先捋一捋门面的作用,从类图上 ...

  2. 抽丝剥茧——调停者和门面设计模式

    调停者和门面设计模式 今天我们来聊两个设计模式:调停者设计模式和门面设计模式,为什么要将他们放在一起讲解,因为他们两个东东太像了,仅仅是由于作用的地方不同而产生的不同的叫法. 我们用一个对于我们90后 ...

  3. 20191219 门面设计模式

    门面设计模式 外部与一个子系统的通信必须通过一个统一的门面(Facade)对象进行,这就是门面模式. 使用哪种设计模式属于详细设计. 门面模式就是动里不动外,让外层好调用.使用门面设计模式. 门面设计 ...

  4. 简易的动物园管理系统之Java8流式API的重构代码(使用 门面设计模式)

    文章目录 前言 之前的文章 本次的源码 AnimalTypeEnum SexEnum Animal AnimalFactory BaseAnimal Bird Cat Dog Fish AddAnim ...

  5. 一看就懂!【英雄联盟锐雯】与 Python 详解设计模式之门面模式

    [网络配图] 设计模式(Design Pattern)是一套被反复使用.多数人知晓的.经过分类的.代码设计经验的总结.使用设计模式的目的:为了代码可重用性.让代码更容易被他人理解.保证代码可靠性.设计 ...

  6. java设计模式并发_[高并发Java 七] 并发设计模式

    [高并发Java 七] 并发设计模式 [高并发Java 七] 并发设计模式 为什么80%的码农都做不了架构师?>>> 在软件工程中,设计模式(design pattern)是对软件设 ...

  7. .net 有哪些主流的设计模式_「设计模式自习室」门面模式 Facade Pattern

    前言 <设计模式自习室>系列,顾名思义,本系列文章带你温习常见的设计模式.主要内容有: 该模式的介绍,包括: 引子.意图(大白话解释) 类图.时序图(理论规范) 该模式的代码示例:熟悉该模 ...

  8. 《编程机制探析》第七章 设计模式

    第七章 设计模式 什么是真正的面向对象的设计?这是一个困扰我多年的问题. 当年,面向对象的各种神话甚嚣尘上,一个程序员要是不能侃上两句面上对象,都不敢出门见人. 那时候,我接触的第一门面向对象语言是C ...

  9. Java中的门面设计模式,非常有用!

    门面设计模式又叫外观设计模式,其核心思想正如其字面意思,向用户提供一个门户,用户只需要访问这个门户来获取他们想要的数据,无需管理这个门户内部的构成,也无需知道里面的运行流程等等,对于开发者来说,使用门 ...

最新文章

  1. 高性能Linux服务器运维实战,《高性能Linux服务器构建实战》笔记
  2. Flex与.NET互操作系列文章
  3. html逻辑判断符,JavaScript中的逻辑判断符、||与!介绍
  4. 崩坏三x86架构闪退_不给X86留活路?苹果下一代M系列芯片竟然这么强
  5. 牛客题霸 [删除有序链表中重复的元素] C++题解/答案
  6. SUMIFS函数多条件求和的9个实例【转载】
  7. FA_手工明细增加固定资产(流程)
  8. ios kvo 要引入_iOS KVO 实现原理 和 自己实现KVO
  9. 三 .数据库(表操作)
  10. jsp校园二手交易平台的设计答辩PPT模板
  11. Nature:新发现挑战神经元作用传统理论 [转自科学网]
  12. 利用ajax查询数据库显示在前台,ajax动态查询数据库数据并显示在前台的方法
  13. 14张图+年终秀完整版视频:给错过的和想温故知新的你
  14. Matlab如何下载安装科研绘图工具Gramm并绘图
  15. openstack删除僵尸卷
  16. Kettle连接MySQL数据库报错:Driver class ‘org.gjt.mm.mysql.Driver‘ could not be found
  17. 微信公众号怎么生成带粉丝关注统计的渠道二维码
  18. 获取ALM中步骤数据
  19. 中国股市:如果历史会重复?
  20. 库卡机器人profinet连接说明(西门子PLC部分)

热门文章

  1. 字符串匹配------回顾大一时的一份代码
  2. Codeforces Round #375 (Div. 2) B. Text Document Analysis(字符串处理,简单题目)
  3. 【递归】进制转换、字符串反转、判断回文
  4. 在线办公的前浪与后浪:输出工具到输出能力
  5. 抖音自媒体运营工具合集
  6. jmeter最大请求数_jmeter 测试某网页最大并发用户数;
  7. JS中的深拷贝与浅拷贝
  8. Panda3D设置游戏背景颜色和节点颜色、透明度
  9. 孤立的知识是没有用途的,融汇贯通、学以致用才是正道
  10. JavaScript中的强制多态 | Lynda教程 中文字幕