常用的设计模式(七)——门面设计模式
随着系统的不断改进和开发,它们会变得越来越复杂,系统会生成大量的类,这使得程序流程更难被理解。门面模式可为这些类提供一个简化的接口,从而简化访问这些类的复杂性。
门面模式(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 方法,所有代码都在里面,然后你就看吧,一大坨的程序,看着能把人逼疯,使用门面模式后,对门面进行单元测试,约束项目成员的代码质量,对项目整体质量的提升也是一个比较好的帮助。
常用的设计模式(七)——门面设计模式相关推荐
- 设计模式之门面设计模式
一.理清门面 门面模式很简单而且我们就在使用,废话不多说直接上类图. 关注Client类和Facad类还有subsystem即可. OK,是不是觉得似曾相识,哈哈一会解答.先捋一捋门面的作用,从类图上 ...
- 抽丝剥茧——调停者和门面设计模式
调停者和门面设计模式 今天我们来聊两个设计模式:调停者设计模式和门面设计模式,为什么要将他们放在一起讲解,因为他们两个东东太像了,仅仅是由于作用的地方不同而产生的不同的叫法. 我们用一个对于我们90后 ...
- 20191219 门面设计模式
门面设计模式 外部与一个子系统的通信必须通过一个统一的门面(Facade)对象进行,这就是门面模式. 使用哪种设计模式属于详细设计. 门面模式就是动里不动外,让外层好调用.使用门面设计模式. 门面设计 ...
- 简易的动物园管理系统之Java8流式API的重构代码(使用 门面设计模式)
文章目录 前言 之前的文章 本次的源码 AnimalTypeEnum SexEnum Animal AnimalFactory BaseAnimal Bird Cat Dog Fish AddAnim ...
- 一看就懂!【英雄联盟锐雯】与 Python 详解设计模式之门面模式
[网络配图] 设计模式(Design Pattern)是一套被反复使用.多数人知晓的.经过分类的.代码设计经验的总结.使用设计模式的目的:为了代码可重用性.让代码更容易被他人理解.保证代码可靠性.设计 ...
- java设计模式并发_[高并发Java 七] 并发设计模式
[高并发Java 七] 并发设计模式 [高并发Java 七] 并发设计模式 为什么80%的码农都做不了架构师?>>> 在软件工程中,设计模式(design pattern)是对软件设 ...
- .net 有哪些主流的设计模式_「设计模式自习室」门面模式 Facade Pattern
前言 <设计模式自习室>系列,顾名思义,本系列文章带你温习常见的设计模式.主要内容有: 该模式的介绍,包括: 引子.意图(大白话解释) 类图.时序图(理论规范) 该模式的代码示例:熟悉该模 ...
- 《编程机制探析》第七章 设计模式
第七章 设计模式 什么是真正的面向对象的设计?这是一个困扰我多年的问题. 当年,面向对象的各种神话甚嚣尘上,一个程序员要是不能侃上两句面上对象,都不敢出门见人. 那时候,我接触的第一门面向对象语言是C ...
- Java中的门面设计模式,非常有用!
门面设计模式又叫外观设计模式,其核心思想正如其字面意思,向用户提供一个门户,用户只需要访问这个门户来获取他们想要的数据,无需管理这个门户内部的构成,也无需知道里面的运行流程等等,对于开发者来说,使用门 ...
最新文章
- 高性能Linux服务器运维实战,《高性能Linux服务器构建实战》笔记
- Flex与.NET互操作系列文章
- html逻辑判断符,JavaScript中的逻辑判断符、||与!介绍
- 崩坏三x86架构闪退_不给X86留活路?苹果下一代M系列芯片竟然这么强
- 牛客题霸 [删除有序链表中重复的元素] C++题解/答案
- SUMIFS函数多条件求和的9个实例【转载】
- FA_手工明细增加固定资产(流程)
- ios kvo 要引入_iOS KVO 实现原理 和 自己实现KVO
- 三 .数据库(表操作)
- jsp校园二手交易平台的设计答辩PPT模板
- Nature:新发现挑战神经元作用传统理论 [转自科学网]
- 利用ajax查询数据库显示在前台,ajax动态查询数据库数据并显示在前台的方法
- 14张图+年终秀完整版视频:给错过的和想温故知新的你
- Matlab如何下载安装科研绘图工具Gramm并绘图
- openstack删除僵尸卷
- Kettle连接MySQL数据库报错:Driver class ‘org.gjt.mm.mysql.Driver‘ could not be found
- 微信公众号怎么生成带粉丝关注统计的渠道二维码
- 获取ALM中步骤数据
- 中国股市:如果历史会重复?
- 库卡机器人profinet连接说明(西门子PLC部分)
热门文章
- 字符串匹配------回顾大一时的一份代码
- Codeforces Round #375 (Div. 2) B. Text Document Analysis(字符串处理,简单题目)
- 【递归】进制转换、字符串反转、判断回文
- 在线办公的前浪与后浪:输出工具到输出能力
- 抖音自媒体运营工具合集
- jmeter最大请求数_jmeter 测试某网页最大并发用户数;
- JS中的深拷贝与浅拷贝
- Panda3D设置游戏背景颜色和节点颜色、透明度
- 孤立的知识是没有用途的,融汇贯通、学以致用才是正道
- JavaScript中的强制多态 | Lynda教程 中文字幕