我是靠谱客的博主 魁梧饼干,最近开发中收集的这篇文章主要介绍Facade(外观)模式总结前言一、外观模式总结二、外观模式应用示例总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Facade(外观)模式总结

  • 前言
  • 一、外观模式总结
    • 1、模式意图
    • 2、参与者
    • 3、结构及效果
  • 二、外观模式应用示例
    • 1、用例背景描述
    • 2、用例结构图
    • 3、子系统类说明
    • 4、外观类说明
  • 总结


前言

        本周五参加了Facade(外观)模式研讨会,本文的目的是对这个模式的总结和分享,希望对需要学习这个设计模式的同学有所帮助。本文一共分为两个部分,第一个部分是外观模式的基础知识总结;第二个部分是外观模式的一个例子分享。

一、外观模式总结

        

1、模式意图

为子系统中的一组接口提供一个一致的界面,Façade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

2、参与者

Facade
-- 知道哪些子系统类负责处理请求;
-- 将客户的请求代理给适当的子系统对象。
Subsystem classes
-- 实现子系统的功能;
-- 处理由Façade对象指派的任务;
-- 没有Façade的任何相关信息

3、结构及效果

外观模式结构图:

在这里插入图片描述

效果:
1、它对客户屏蔽子系统组件,减少客户处理对象的数目,使子系统使用更方便。
2、实现子系统与客户之间松耦合。
3、不限制客户使用子系统类。

二、外观模式应用示例

1、用例背景描述

         在can总线中,can数据帧最多能携带8个字节数据,为了能把长消息(消息字符长度超过8个字节)的数据传输到指定节点,定义了一个传输协议:ISO-15765,该协议规定长消息是如何传输的。客户如果想发长消息,首先需要按协议把长消息拆分成短消息,然后按can帧发送出去;为了接收发送消息的响应结果,需要接收消息并组成长消息,返回给客户。这样一个来回,涉及了四个子系统:拆包、发送、接收、组包。其实客户只想发送一个消息,得到返回结果,可以利用外观模式,简化客户代码,外观只提供一个发送接口即可,当接口返回时,返回接收到的消息,客户可以不关心长消息是如何拆包、发送的,也不关心短消息如何组合成长消息(响应)的。外观模式非常适合这种分层协议,层与层之间通过外观做交互,简单方便。

2、用例结构图

在这里插入图片描述

3、子系统类说明

1、msg_parser_t:负责把长消息(请求)拆分成短消息以及把收到的短消息组合成一个长消息(响应),该类提供以下接口:
vector<shor_msg_t*> parser_long_msg(unsigned char* request);
unsigned char* parser_short_msg(vector<short_mst_t*> response);
2、sender_t:负责把短消息以can帧的方式发送到总线,提供发送接口:
ret_t send_short_msg(vector<short_mst_t*> request);
3、receiver_t:负责从can总线接收短消息。
vector<shor_msg_t*> receive_msg();

4、外观类说明

外观类提供一个发送消息接口:
ret_t request(unsigned char* request, unsigned char** response) {
	//拆分消息
	vector<shor_msg_t*> short_msgs = parser_long_msg(request);
	//发送can帧短消息
	send_short_msg(short_msgs);
	
	//接收响应
	vector<shor_msg_t*> response_short_msgs = receive_msg();
	//响应:短消息组成长消息
	unsigned char* response_long_msg = parser_short_msg(response_short_msgs );
	*response = response_long_msg ;
	return RET_OK;
}

总结

         通过以上示例,可知,外观模式非常适合简化客户代码,适合分层协议的设计和实现。外观只是提供了一种方便客户使用的接口,可以当然也可以自己直接使用子系统的类来实现相同功能。使用外观接口,客户代码非常简单,但是只能按外观默认的实现方式,比较死板;直接使用子系统的类,比较灵活,就是用起来比较麻烦,适合对子系统非常了解的开发人员使用。

最后

以上就是魁梧饼干为你收集整理的Facade(外观)模式总结前言一、外观模式总结二、外观模式应用示例总结的全部内容,希望文章能够帮你解决Facade(外观)模式总结前言一、外观模式总结二、外观模式应用示例总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部