外观设计模式

外观设计模式

什么是外观模式

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

这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。

外观模式例子

用户注册完之后,需要调用        消息接口:         阿里短信接口、邮件接口、微信推送接口,发送邮件

  把内部复杂的业务封装起来 外部调用

废话不多说,赶紧敲代码:

   先定义各个消息类型的接口:

发邮件:

package WaiGuanModel;

public interface EmailService {
   public void sendEmail();
}

微信推送:

package WaiGuanModel;

public interface WeChatService {

   public void sendWeChat();
    
}

发送短信:

package WaiGuanModel;
//发送短信
public interface MessageService {

     public void send();
    
    
}

各个接口的实现类:

package WaiGuanModel;

public class EmailServiceImpl implements EmailService{
  
    public void sendEmail() {
        System.out.println("发送邮件");
        
    }
    
}
package WaiGuanModel;

public class WeChatServiceImpl implements WeChatService{
     @Override
    public void sendWeChat() {
        System.out.println("发送微信推送");
        
    }
    
}
package WaiGuanModel;

public class MessageServiceImpl  implements MessageService{

    @Override
    public void send() {
        System.out.println("发送短信");        
    }
    
}

来个门面类去整合一下:

package WaiGuanModel;

public class Computer {
    //定义成全局的  (如果是spring 容器会去 帮忙加载的 加载好的 下面进行调用)
    EmailService emailService;
    MessageService messageService;
    WeChatService weChatService;
    
    public Computer() {
            emailService = new EmailServiceImpl();
            messageService = new MessageServiceImpl();
            weChatService = new WeChatServiceImpl();
    }
    
    
    
    public void sendMsg(){
        emailService.sendEmail();
        messageService.send();
        weChatService.sendWeChat();
    }
    

}

客户端:

package WaiGuanModel;

public class Client {

    public static void main(String[] args) {
        
        new Computer().sendMsg();
    }
    
}

运行结果:

 

 

dolphinscheduler集群服务一键安装启动实现流程剖析 通过以上分析我们基本梳理清楚了整个dolphinscheduler项目的一键安装启动逻辑, 我们现在在通过一张图正好理一下整个实现流程。关于一键停止集群服务及一件查询集群各个角色服务实例运行状态的实现也都在stop-all.sh/status-all.sh及dolphinscheduler-daemon.sh这三个脚本中, 有兴趣自行研究。写这篇文章的核心目的不仅在于给大家分享如何优秀的开源项目的一键安装部署的实现过程。 阅读详情

相关推荐

AutoLISP 学习 (一)

AutoLISP基本语法结构、语法 以括号组成表达式,左右括号一定要成对,单、双引号也要成对,例如: (defun c:hello() (princ "\nHello world!") (prin1) ) 表达式格式:(函数名 操作数 操作数 …),例如: (setq p1 (list 0 0)) (setq p2 (list 10 10)) (setq p3 (list 20 20)) ;;; CAD中画直线,经过p1 p2 p3 (command "LINE" p1 p2 p3 ""

m0_54575622的博客 2123

iOS设计模式之外观模式

外观(Facade)模式:是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,外部应用程序不用关心内部子系统的具体的细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。 外观(Facade)模式是“迪米特法则”的典型应用,它有以下主要优点。 降低了子系统与客户端之间的耦合度,使得子系统的变化不会影响调用它的客户类。 对客户屏蔽...

liuyinghui523的专栏 673

Dify+firecrawl:一个超好用的网页转Markdown API,打造你的第一个能检索爬虫RAG知识库的聊天机器人

Firecrawl是一个超简单的API服务——你扔给它一个URL,它就能把整个网站(包括子页面!)的内容自动抓下来,并且转换成干净、易读的Markdown格式。不用配置网站的站点地图,不用写爬虫规则,API调一下,数据直接到手。接下来我们一起本地部署吧!

2501_91673550的博客 2991

外观设计模式解读

1) 外观模式(Facade),也叫“过程模式:外观模式为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用2) 外观模式通过定义一个一致的接口,用以屏蔽内部子系统的细节,使得调用端只需跟这个接口发生调用,而无需关心这个子系统的内部细节。

一个菜鸡的博客 1133

【Vite+Vue3+TS】基于Vite+Vue3+TypeScript+ESLint+Prettier+Stylelint搭建项目(亲测超详细)

结合了很多项目和文章,总结一篇项目构建的笔记。 温馨提示:文章末尾记录了我在搭建项目过程中,遇到的一些问题和解决办法 ~

aDiaoYa_的博客 4231

AI全景之第八章第三节:时间序列分析与预测技术

摘要 时间序列分析与预测技术从传统统计模型发展到深度学习方法。传统方法包括ARIMA模型(处理趋势和季节性)、指数平滑(加权平均预测)和状态空间模型(概率框架分解)。机器学习方法通过特征工程和树模型提升非线性建模能力。深度学习方法中,RNN/LSTM处理序列依赖,TCN利用因果卷积,Transformer通过注意力机制捕获长程依赖。当前研究趋势结合神经符号方法和生成模型,以提高预测精度和可解释性。不同方法各具优势,需根据数据特性和预测需求选择。

技术引领业务创新 990

设计模式——外观设计模式(结构型)

本文介绍了外观设计模式,它是一种结构型设计模式,通过引入一个外观类来封装复杂子系统的调用细节,对外提供简单统一的接口。文中通过生活类比、关键角色介绍、使用场景分析以及结构说明等方面对这一模式进行了全面阐述,还涉及了实现方式、适合场景、实战示例和相关思考,有助于读者深入理解外观设计模式的原理和应用。

庄小焱 1500

视源CVTE嵌入式面试题及参考答案(200+面试题,17万字)

内核模块如何设置? 内核模块是可在运行时动态加载到内核或从内核卸载的代码块。以下是设置内核模块的步骤: 首先,编写内核模块代码。通常使用 C 语言编写,包含必要的头文件,如<linux/init.h>、<linux/module.h>等。在代码中,需要定义模块的初始化函数和清理函数。初始化函数在模块加载时被调用,用于进行模块的初始化工作,如注册设备、分配资源等。清理函数在模块卸载时被调用,用于释放资源、注销设备等。 例如: #include <li

大模型大数据攻城狮的专栏 2204

设计模式之外观设计模式

(Facade) 是一种结构型设计模式, 为子系统中的提供一个一致的界面,此模式定义了,这个接口使得这一子系统更加容易使用。(Facade) 提供了一种访问特定子系统功能的便捷方式, 其了解如何重定向客户端请求, 知晓如何操作一切活动部件。创建(Additional Facade) 类可以避免多种不相关的功能污染单一外观, 使其变成又一个复杂结构。客户端和其他外观都可使用附加外观。(Complex Subsystem) 由数十个不同对象构成。

qq_74811378的博客 1755

4、同轴3 - RRR球面并联机构运动分析与自主移动农业水果采摘机器人设计

本文研究了同轴3-RRR球面并联机构的运动学与速度分析,采用几何与数值方法进行位置分析,并利用螺旋理论简化雅可比矩阵的推导,通过ADAMS仿真验证了结果的准确性。同时提出一种新型自主移动农业水果采摘机器人设计,具备多功能末端执行器、水果软管转移系统和配重式静态稳定性结构,旨在减少采摘损伤、提升效率。文章还探讨了该机构在机器人控制与仿真中的应用潜力,以及采摘机器人在智能化升级与多机协作方面的发展方向。

y4z5a6b7的博客 246

【生产实践】PostgreSQL高可用Patroni安装(超详细已踩坑)

一 安装Patroni 0 Patroni 对Python的版本要求 我安装的是Patroni最新版本 :4.0.3,Patroni 对Python 版本有要求,没有具体的版本矩阵,但是根据每个版本发布信息可以得到以下信息 Patroni 4.0 需要 Python 3.8 以上(可以根据下面发布版本信息推理出) Version 3.0.2 Version 3.0.2 dropped support of Python older than 3.6. 版本3.0.2不再支持3.6版本以下的P

DBA之路的博客 1741

结构设计模式:外观设计模式

外观设计模式是结构设计模式的一种。外观设计模式的主要目标是在复杂系统之前提供一个简单的界面。这样用户或客户端就可以访问简单的界面,而无需了解其子系统的复杂性。外观设计模式主要用于向用户隐藏系统中涉及的依赖关系。

新华编程特战队 1850

FFmpeg 开发(01):FFmpeg 编译和集成

尽管 FFmpeg 功能强大,但是由于其采用的是带有传染性的 LGPL/GPL 开源协议,所以一些大厂基本上都是自己独立开发类似的音视频处理库,甚至在接口和组织模块上模仿 FFmpeg 。

字节流动 1万+

Golang外观设计模式(十)

上一篇组合设计模式:https://blog.youkuaiyun.com/weixin_40165163/article/details/90740155 github:https://github.com/zhumengyifang/GolangDesignPatterns 外观设计模式 wiki百科:外观设计模式隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属...

王佳宇的个人博客 6241

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

java设计模式之外观设计模式

java设计模式之外观设计模式,包含所有的源代码用例

zdliue的博客 484

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【深入理解设计模式】外观设计模式

外观设计模式(Facade Design Pattern)是一种结构型设计模式,旨在为复杂系统提供简单的接口。该模式通过为子系统提供一个高级接口,使得客户端与子系统之间的交互更加简单。外观设计模式通常被用来隐藏系统的复杂性,并且提供一个简化的接口,以便客户端能够更容易地使用系统。

guojiaqi_的博客 1691

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

经典设计模式之外观设计模式【门面模式】

一、什么是外观设计模式 外观模式(Facade),他隐藏了系统的复杂性,并向客户端提供了一个可以访问系统的接口。这种类型的设计模式属于结构性模式。为子系统中的一组接口提供了一个统一的访问接口,这个接口使得子系统更容易被访问或者使用。 二、外观设计模式原理图 简单来说,该模式就是把一些复杂的流程封装成一个接口供给外部用户更简单的使用。这个模式中,设计到3个角色。 1)门面角色:外观模式的核心...

小尾寒羊的博客 254

JAVA设计模式之 10.外观设计模式

外观设计模式:有个外观类把一些小的方法归类为几个大方法里面。最后调用时就简单明了了。 //外观设计模式 也叫 过程设计模式,门面设计模式 public class Facade { public static void main (String[] args) { System.out.println("*******************************"); HomeTheaterFacade homeTheaterFacade = new Home

L'Étranger的博客 128
上一篇: 适配器模式
下一篇: 原型模式
Art&Code
博客等级 码龄7年 77粉丝 554原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值