首页 > 其他分享 >设计模式利剑17-门面模式

设计模式利剑17-门面模式

时间:2022-11-09 17:02:08浏览次数:46  
标签:角色 17 利剑 模式 一个 门面 邮递 设计模式 子系统


定      义:要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行,门面模式提供一个高层次的接口,使得子系统更易于使用

优      点:

              1、减少系统的相互依赖

              2、提高了灵活性

              3、提高了安全性

缺      点:最大的缺点就是不符合开闭原则,对修改关闭,对扩展开放,

应用场景:

              1、为一个复杂的模块或子系统提供一个供外界访问的接口

              2、子系统相对独立--外界对子系统的访问只要黑箱操作即可

              3、预防低水平人员带来的风险扩散

应用案例:

              先来看看门面模式的类图:

设计模式利剑17-门面模式_扩展

           Facade门面角色:客户端可以调用这个角色的方法,此角色知晓子系统的所有功能和责任,但是注意到此角色没有实际的业务逻辑,只是一个委托类。

          Subsystem Classes:可以同时有一个或者多个子系统,每一个子系统都不是一个单独的类,而是一个类的集合,子系统并不知道门面的存在。

          想一想现在邮寄一份邮件有多麻烦,首先我们得去购买信纸、信封,没笔还得准备好笔,然后就是写信,写好后封装好,然后再到邮寄去进行邮递,这个过程不允许出错,出错了就无法邮递出去了,对于个人来讲,这种邮递方式是在是太麻烦,我们想想门面模式,然后再想想发送邮件,是否可以利用该模式呢?如果我们将写信、装信、发信都交给邮局去做不是更加简单了吗?于是我们设计类图如下:

设计模式利剑17-门面模式_门面模式_02

           再看看上面的设计,对于用户来讲非常的方便,而且有利于扩充,如果某段时间警察要检查邮件内容才允许发布,那么在门面模块中增加一个检测方法就行,对用户来讲根本无从解释和说明。再来看一个令人非常头疼的东西,去医院,去医院后,我们要自己挂号,找门诊,看病,开单子,划价,化验,收费等,而这些都需要病人自己亲自去处理,这对病人来说是一个非常难以处理的问题,如果引入门面模式,由一个专门的接待部门来解决这些问题不是更好吗?等不急了,我先来看看这个UML图如何来实现:

设计模式利剑17-门面模式_类图_03

标签:角色,17,利剑,模式,一个,门面,邮递,设计模式,子系统
From: https://blog.51cto.com/u_15870687/5837358

相关文章

  • 设计模式利剑22--享元模式
    定     义:使用共享对象可以有效地支持大量的细粒度的对象,享元模式可以避免大量非常相似类的开销。在程序设计中有时需要生成大量细             粒度的......
  • CF1747 题解
    比赛链接:https://codeforces.com/contest/1747题解:AB水题//bySkyRainWind#include<cstdio>#include<vector>#include<cstring>#include<iostream>#include......
  • js设计模式-类式继承
    js中怎么实现类式继承呢?首先声明父类,在声明子类,然后将父类的实例赋予给子类的原型就可以了。假设父类长这样:varBook=function(id,name,price){//私有的属性......
  • 设计模式汇总
    基础​​UML各种图总结​​​​依赖、关联、聚合和组合之间的区别​​设计模式的原则​​设计模式七大原则​​创建型​​简单工厂模式​​​​工厂方法模式​​​​抽象工......
  • CF1750题解
    A.IndirectSort首先,如果\(a_i>a_k\),\(a_i\)就会变大,而这样的操作是没有意义的.因此操作可以转换为\(\forallj,k(j<k)\),如果\(\existsi,i<j\),使得\(a[i]<=a[k]\),......
  • php 设计模式
    <?php//协程生成器函数并发classTest{publicfunctionasync(){$start=microtime(true);$url="https://money.finance.sina.com.c......
  • 00017-layui 对话框 layer.open 点击保存,按钮失效,保存完后,再恢复
    00017-layui对话框layer.open点击保存,按钮失效,保存完后,再恢复 原创认真的coder2020-05-3022:28:43©著作权文章标签layui文章分类jQuery前端开发阅读数816......
  • 牛客java选择题每日打卡Day17
    牛客java选择题每日打卡Day17......
  • 3179-2020-java-2-3
    importjava.io.*;importjava.util.StringTokenizer;classMain{publicstaticvoidmain(String[]args)throwsIOException{BufferedReaderreade......
  • Part 17:Cocos2d-x开发实战-基于Node.js的Socket.IO网络通信-关东升-专题视频课程
    Part17:Cocos2d-x开发实战-基于Node.js的Socket.IO网络通信—5843人已学习课程介绍        介绍了基于Node.js的Socket.IO网络通信技术。我们介绍了采用Node.js技......