【UML用户指南】-30-对体系结构建模-模式和框架

目录

1、机制

2、框架

3、常用建模技术

3.1、对设计模式建模

3.2、对体系结构模式建模


 

用模式来详述形成系统体系结构的机制和框架。通过清晰地标识模式的槽、标签、按钮和刻度盘

在UML中,

设计模式(也叫做机制)建模,将它们表示为协作。

将体系结构模式建模为框架,将它们表示为衍型化的包。


8afcae74c7b24a73b0702b0dd281887f.png

模式 (pattern)是对给定语境中共同问题的通用解决方案。

机制(mechanism)是应用于类群体的设计模式。

框架 (framework)是为领域中的应用系统提供可扩充模板的体系结构模式。
 

例如,如果正在建立一个用户密集型系统,一种经过考验的组织抽象的方法是使用模型——视图——控制器模式,用这种模式将对象(模型)和它们的表示(视图)以及协调二者同步工作的代理(控制器)清楚地分离开来。与此类似,如果是在建立一个破解密码的系统,一种经过考验的组织系统的方法是使用黑板体系结构,它很适合以机会主义的方式来解决难处理的问题。
 

1、机制

机制只是应用于类群体的设计模式的一个别名。

 

1)第一种方式:一个机制仅仅是为一组共同工作来完成一些共同而有意义的行为的抽象指定一个名称。因为它只是对类的群体命名,所以可将它建模为简单的协作。展开这个协作,可以看到它的结构方面(通常用类图表示)和行为方面(通常用交互图表示)。像这样的协作将交叉引用系统中的个体抽象;一个给定的类可能成为多个协作的成员。
689a271373e742c39b198dc04d3a5af2.png

2)第二种方式:一个机制是给一组共同工作来完成公共而有意义的行为的抽象指定一个模板的名称。可以将这种机制建模为参数化协作,它在UML中的画法与模板类的画法相似。展开协作,可以看到它的结构方面和行为方面。

压缩协作,可以看到模式是如何将协作的模板部件和系统中存在的抽象绑定在一起而应用于系统的。将机制建模为参数化协作时,要标识一些选项,如槽、标签、按钮和刻度盘等,利用这些选项通过模板的参数来调整模式。像这样的协作可以绑定到不同的抽象集而在系统中反复出现。在这个例子中,模式的Subject 和Observer类分别与具体类CallQueue和SliderBar绑定。
 

606d9ff327364524bda9b4eeafb5a504.png

 

2、框架

框架是为一个领域中的应用系统提供可扩充模板的体系结构模式。

例如,在实时系统中一种常见的体系结构模式是循环执行模式,它将时间划分为一些帧和子帧,其间的处理要在严格的期限内发生。

框架比机制的规模大。

在UML中,把框架建模为衍型化的包。展开包,看到存在于系统体系结构的各个视图中的机制。

下图描述了一个名为CyclicExecutive的框架。此框架有一个包含一组事件类的协作(CommonEvents)和一个以循环的方式处理这些事件的机制(EventHandler)。在这个框架上进行构造的客户(如Pacemaker),可以通过建立子类而使用CommonEvents中的抽象,并且也能应用EventHandler机制的实例。
 

952e2c05a2fb4845b157fe890638b25b.png

3、常用建模技术

3.1、对设计模式建模

        从外部看,设计模式被表示成一个参数化协作。作为协作,模式提供了一组抽象,其结构和行为共同工作,以完成一些有用的功能。协作的参数命名了该模式的用户必须绑定的元素。这使得设计模式成为一个模板,通过提供与模板参数相匹配的元素来将它用于特定的语境。

        从内部看,设计模式只是一个协作,用它的结构部分和行为部分表示。通常可以用一组类图(结构方面)和一组交互图(行为方面)对这种协作的内部建模。协作的参数命名了其中一些结构元素,当设计模式被绑定到具体语境中时,就被来自该语境的抽象实例化。

下图表示命令模式“将请求封装成对象,从而可以用不同的请求(队列或日志请求)将客户参数化,并支持可以取消的操作”。

在每种情况下必须

把参数 AbstractCommand 绑定到同一个抽象超类。

在不同的绑定中,把参数 ConcreteCommand 绑定到不同的特殊类;

把参数 Receiver 绑定到该命令作用于其上的类。

类Command可以由模式创建,但是把它作为一个允许创建多个命令层次的参数。
 

e93c716273b9491dab86125a935f3ffe.png

下图表示该设计模式的类图。使用被命名为模式参数的类。

9ec6aba46fb649c694c4ecb0b870d54a.png

下图表示命令模式的顺序图

246a9c7dd538471d92fa95af878f2a99.png

3.2、对体系结构模式建模

框架实际上就是对体系结构的描述,尽管它是不完整的而且可能是参数化的。

下图给出了Blackboard(黑板)体系结构模式的规约,这个模式“解决了那些从原始数据转换为高层数据结构时没有可行的确定性的解决方案的问题”。

这个体系结构的核心是Blackboard(黑板)设计模式,它规定了KnowledgeSources(知识源)、Blackboard(黑板)和Controller(控制器)如何协作。

这个框架中还包含设计模式Reasoning engine(推理引擎),它描述了每个KnowledgeSource如何被驱动。

最后,这个框架还显示了一个用况,即Apply newknowledge sources(应用新知识源),它解释客户如何去调整框架本身。
 

a1d0ad28ec61489bbe02b119055440aa.png

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/42536.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【web前端HTML+CSS+JS】--- CSS学习笔记02

一、CSS(层叠样式表)介绍 1.优势 2.定义解释 如果有多个选择器共同作用的话,只有优先级最高那层样式决定最终的效果 二、无语义化标签 div和span:只起到描述的作用,不带任何样式 三、标签选择器 1.标签/元素选择器…

【算法笔记自学】第 8 章 提高篇(2)——搜索专题

8.1深度优先搜索&#xff08;DFS&#xff09; #include <cstdio>const int MAXN 5; int n, m, maze[MAXN][MAXN]; bool visited[MAXN][MAXN] {false}; int counter 0;const int MAXD 4; int dx[MAXD] {0, 0, 1, -1}; int dy[MAXD] {1, -1, 0, 0};bool isValid(int …

【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【21】【购物车】

持续学习&持续更新中… 守破离 【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【21】【购物车】 购物车需求描述购物车数据结构数据Model抽取实现流程&#xff08;参照京东&#xff09;代码实现参考 购物车需求描述 用户可以在登录状态下将商品添加到购物车【用户购物…

CSS技巧:纯CSS实现文字渐变动画效果

文字渐变动画&#xff0c;可以实现的有两种&#xff1a;一种是一行文字整体变化颜色&#xff1b;另一种一行文字依次变化颜色。接下来&#xff0c;我就介绍一下这两种文字渐变的实现过程。 布局代码&#xff1a; <div class"con"><div class"animate…

7.pwn 工具安装和使用

关闭保护的方法 pie: -no-pie Canary:-fno-stack-protector aslr:查看:cat /proc/sys/kernel/randomize_va_space 2表示打开 关闭:echo 0>/proc/sys/kernel/randomize_va_space NX:-z execstack gdb使用以及插件安装 是GNU软件系统中的标准调试工具&#xff0c;此外GD…

软件设计模式总结

设计模式是软件设计中常见问题的通用解决方案。以下是一些常见的设计模式&#xff0c;分为三大类&#xff1a;创建型模式、结构型模式和行为型模式。 创建型模式&#xff08;Creational Patterns&#xff09; 这些模式提供了对象创建的机制&#xff0c;增加了已有代码的灵活性…

electron 初始使用

electron electron文档地址deno下载地址安装命令 yarn config set electron_mirror https://cdn.npm.taobao.org/dist/electron/ npm install下载文件 文件下载完成后&#xff0c;新建dist目录&#xff0c;解压到list目录下&#xff1b;path文件中写入electron.exe 运行命令 …

排序格式排序格式

排序格式排序格式

P5. 微服务: Bot代码的执行

P5. 微服务: Bot代码的执行 0 概述1 Bot代码执行框架2 Bot代码传递给BotRunningSystem3 微服务: Bot代码执行的实现逻辑3.1 整体微服务逻辑概述3.2 生产者消费者模型实现3.3 consume() 执行代码函数的实现3.4 执行结果返回给 nextStep 4 扩展4.1 Bot代码的语言 0 概述 本章介绍…

什么是CNN,它和传统机器学习有什么区别

CNN&#xff0c;全称为卷积神经网络&#xff08;Convolutional Neural Networks&#xff09;&#xff0c;是一种专门用于处理具有网格结构数据&#xff08;如图像、视频&#xff09;的深度学习模型。它由多个卷积层、池化层、全连接层等组成&#xff0c;通过卷积运算和池化操作…

Vulnhub靶场DC-5练习

目录 0x00 准备0x01 主机信息收集0x02 站点信息收集0x03 漏洞查找与利用1. 利用burpsuite爆破文件包含的参数2. 文件包含3. nginx日志挂马4. 反弹shell5.漏洞利用和提权 0x04 总结 0x00 准备 下载链接&#xff1a;https://download.vulnhub.com/dc/DC-5.zip 介绍&#xff1a; …

kafka-3

Kafka 消费组 consumer-offsets-N 稀疏索引 Kafka集群 集群搭建 集群启动和验证 Topic的意义 Topic和Partition 分区 副本 集群操作指令 多分区&多副本 多分区消费组 Rebalance机制 Rebalance机制处理流程 Rebalance机制-Range Rebalance机制-RoudRobin Rebalance机制-St…

计数排序的实现

原理 对一个数组进行遍历&#xff0c;再创建一个count数组 每找到一个值则在count数组中对应的位置加一&#xff0c;再在count数组中找到数字上方的count值&#xff0c;count值为几&#xff0c;则打印几次数组中的值. 开空间 相对映射 排序的实现 void CountSort(int* a, i…

PageHelper分页查询遇到的小问题

如果我们是这样子直接查询 pagehelper会拼接导我们的sql语句之后 这样子我们搜索出来的list&#xff0c;就是里面参杂了PageHelper的东西 所以我们可以直接转成我们的Page类型 但是如果我们搜索出来的是List<Blog>&#xff0c;我有些信息不想返回给前端&#xff0c;所以…

mac M1安装 VSCode

最近在学黑马程序员Java最新AI若依框架项目开发&#xff0c;里面前端用的是Visual Studio Code 所以我也就下载安装了一下&#xff0c;系统是M1芯片的&#xff0c;安装过程还是有点坑的写下来大家注意一下 1.在appstore中下载 2.在系统终端中输入 clang 显示如下图 那么在终端输…

C++语言相关的常见面试题目(一)

1. const关键字的作用 答&#xff1a; 省流&#xff1a;&#xff08;1&#xff09;定义变量&#xff0c;主要为了防止修改 (2) 修饰函数参数&#xff1a;防止在函数内被改变 &#xff08;3&#xff09;修饰函数的返回值 &#xff08;4&#xff09;修饰类中的成员函数 2. Sta…

Rust入门实战 编写Minecraft启动器#1启动方法

首发于Enaium的个人博客 引言 想必大家都知道Minecraft这个游戏&#xff0c;它是一个非常有趣的游戏&#xff0c;有没有想过它是如何启动的呢&#xff1f;在本系列中&#xff0c;我们将使用Rust编写一个简单的Minecraft启动器。 本系列文章涉及的Rust知识并不多&#xff0c;了…

并发编程-05AQS原理

并发编程-深入理解AQS之ReentrantLock 一 认识AQS 在讲解AQS原理以及相关同步器之前&#xff0c;我们需要对AQS有一些基本的认识&#xff0c;了解下它有什么样的机制&#xff0c;这样追踪源码的时候就不会太过于迷茫&#xff01; 1.1 什么是AQS java.util.concurrent包中的大…

【DevOps】运维过程中经常遇到的Http错误码问题分析(二)

目录 一、HTTP 错误400 Bad Request 1、理解 400 Bad Request 错误 2、排查 400 Bad Request 错误 3、常见的解决方法 二、HTTP 错误401 Unauthorized 1、理解 401 Unauthorized 错误 2、排查 401 Unauthorized 错误 3、常见的解决方法 一、HTTP 错误400 Bad Request …

文件上传漏洞: 绕过方式及原理[表格]

序号绕过原理原理简述详细技术解释绕过方法1前端校验绕过禁用或绕过前端JavaScript验证前端JavaScript用于限制用户上传文件类型&#xff0c;但可被用户禁用或修改使用浏览器插件或开发者工具禁用JavaScript&#xff0c;或修改上传逻辑2MIME类型欺骗更改文件MIME类型以欺骗服务…