Java中的门面模式,一般来说他的用途是隐藏一些不希望用户看到的东西,比如方法,变量,并且这些变量是不能够设置成私有的,因为在系统内部有些地方需要调用。在Tomcat的HttpServletRequest和HttpServletResponse这两个对象中就使用了门面模式。举例:

有一个接口叫做Person,有eat()方法,有一个实现类Chinese中国人,中国人类里面还有run()方法,此系统还有一个类InnerSystem要调用Chinese中的name和run()方法,那么此时的name和run()方法就不能设置成私有,否则在InnerSystem中就调不到name和run()了。这是系统内部的活动。现在有一种情况出现了,既然InnerSystem的属性和方法设置成public,那么其他任何类都能够调用得到,但是我希望系统外部又不能调用而只希望系统内部能调用。此时门面模式就有用了。采用门面类ChineseFacade,他也实现了Person接口,并且把Chinese作为私有变量,让门面类来接待客人,门面类通过私有变量来与里面的对象打交道。此时用户只需要面对门面类,而里面的Chinese对象甚至都不用知道外面还有门面对象。很多人喜欢用医院看病的例子来讲门面模式,其实很形象,也可以用黄牛党买票来表述,当我们需要买张火车票的时候,去找个黄牛党,我们不用关黄牛党是怎么弄到手的,当然黄牛党到窗口去买票,售票员根本毋须关心是谁来买票,只要操作流程正确那么就可以卖票给他。写点代码来测试:

//Person接口:
public interface Person {void eat();
}

//中国人类:
public class Chinese implements Person {String name;public void run() {System.out.println("中国人走路");}@Overridepublic void eat() {System.out.println("中国人吃饭");}}

//系统内部子系统,调用Chinese的任何公共方法和属性:
public class InnerSystem {public void invokePerson() {Chinese chinese = new Chinese();chinese.name = "Jay";chinese.run();}
}

//中国人类的门面类,代替Chinese,相当于他的发言人:
public class ChineseFacade implements Person {private Chinese chinese;public ChineseFacade(Chinese chinese) {this.chinese = chinese;}@Overridepublic void eat() {chinese.eat();}}

public class Test {public static void main(String[] args) {//在系统外部,你根本调用不到系统想要隐藏的属性和方法,只能调用公开的ChineseFacade cf = new ChineseFacade(new Chinese());cf.eat();}
}

转载于:https://www.cnblogs.com/dreamroute/p/3667446.html

Java 门面模式 浅析相关推荐

  1. java门面模式的应用_java设计模式--门面模式

    门面模式 门面模式属于设计模式中的结构型模式,外部与一个子系统通信需要通过一个统一的门面进行,门面模式提供一个高层次的接口,使得子系统易于使用. 门面模式的适用性 门面模式适用于当你要为一个复杂的子系 ...

  2. java 门面模式_Java门面模式

    一.简介 隐藏系统的复杂性,对外提供统一的访问入口,外部系统访问只通过此暴露出的统一接口访问.是一种结构型模式.封装子系统接口的复杂性,提供统一的对外接口,能够使子系统更加简单的被使用. 二.结构及使 ...

  3. 颜值10分姐姐带我玩转java设计模式(内附照片)- 门面模式

    先不说话,直接来张姐姐照片,称呼包子姐姐即可,希望包子姐姐能带飞. 原创不易,麻烦先三连,再细看,谢谢 示例的源码可以直接通过csdn下载也可以通过git导出:https://github.com/i ...

  4. JAVA设计模式之门面模式(外观模式)

    医院的例子 现代的软件系统都是比较复杂的,设计师处理复杂系统的一个常见方法便是将其"分而治之",把一个系统划分为几个较小的子系统.如果把医院作为一个子系统,按照部门职能,这个系统可 ...

  5. java设计模式face_24种设计模式--门面模式【Facede Pattern】

    大家都写过纸质的信件吧,比如给女朋友写情书什么的,写信的过程大家都还记得吧,先写信的内容,然后写信封,把信放到信封中,封好,投递到信箱中进行邮递,这个过程还是比较简单的,虽然简单,这四个步骤都是要跑的 ...

  6. java设计模式之门面模式

    定义: 门面模式又叫做外观模式,提供了一个统一的接口,用来访问子系统中的一群接口.其主要特征是定义了一个高层接口,让子系统更容易使用,属于结构型设计模式 使用场景: 为一个复杂的模式或者子系统提供一个 ...

  7. (设计模式九)java设计模式之外观模式(门面模式)

    1.定义: 外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口 2.生活实例: 医院看病,首先病人必须先挂号,然后门诊.如果医生要求化验,病人必须首 ...

  8. Java设计模式—门面模式(带案例分析)

    (尊重劳动成果,转载请注明出处:https://blog.csdn.net/qq_25827845/article/details/52032536冷血之心的博客) 目录 1.门面模式的定义: 2.通 ...

  9. JAVA之门面模式概述

    门面模式(Facade Pattern)也叫做外观模式,是一种比较常用的封装模式,要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行.门面模式提供一个高层次的接口,使得子系统更易于使用. 医 ...

最新文章

  1. 读写配置文件app.config
  2. TensorFlow官方入门实操课程-全连接神经网络分类
  3. 【转载】Could not create the view: An unexpected exception was thrown.问题解决
  4. 将json数据写入html表单,将json数据提交到html表中
  5. MSP430F5529 DriverLib 库函数学习笔记(九)SPI
  6. 怎么开启队友无伤_王者荣耀:张飞辅助怎么玩才厉害?出装、打法,为你全面解析...
  7. IC卡应用系统开发-(一)卡片读写
  8. js获取本机ip地址
  9. 2021-2027全球与中国美容淋浴器市场现状及未来发展趋势
  10. 梳理chromium/chrome/谷歌浏览器对flash的支持
  11. 溢出overflow和空间定位z-index
  12. 泡泡博客社区源码,简洁,轻便php源码
  13. 《 汇编语言编程基础 基于 LoongArch 》读书与实践笔记
  14. 饿了么开放平台接入(2)——使用Java对接店铺
  15. c语言程序设计吴国良,刘细良
  16. vsCode中Server is already running from different workspace错误解决办法
  17. c 语言 测试工具,几种C/C++语言安全检测工具介绍
  18. 李永乐复习全书概率论与数理统计 第一、二章 随机事件和概率、随机变量及其概率分布
  19. 那些学习了编程的中学生,为什么会更可能成功?
  20. 车载以太网 - SomeIP - 初识 - 01

热门文章

  1. 给你的开源项目加一个绶带吧
  2. 开始使用-编写你的第一个Flutter应用程序
  3. Servlet的Filter的使用
  4. VS2012+EF6+Mysq
  5. 如何在windows server 2008 AD中禁用USB端口(转庐阳侠们博客)
  6. JAVA[Algorithm]--戴克斯特拉
  7. 关于 HTML5 的 11 个让人难以接受的事实
  8. 安全事件日志中的登录事件
  9. C 内存free()出错
  10. jQuery 学习笔记一(认识jQuery jQuery选择器 jQuery中的DOM操作)