从正式接触设计模式到现在有一年了,一直以来都只是在一些技术文章中零零散散认知到一些设计模式,不知道是不是自己懒的缘故,就是没有好好系统的学习一下。这次借着做系统设计的机会,好好在此结合设计模式的理论总结一下。
我现在做的项目中有个子系统是专门负责设备管理的。既然是管理设备,自然就无外乎添加、删除、启动、停止四种功能。这里的设备有很多种,如感应器(用来采集数据信息),又或者是输出设备(打印机)。下面就是设备管理子系统的UML类图(点击可放大):
估计有高人一看就会对图中有些地方作出过度设计的判断,或是其它处理不妥当的地方:)。没关系,正如开头提到的本文旨在总结设计模式中结构模式的应用,所以上图是为了尽可能全的呈现结构模式下所有模式应用而刻意做了一些额外的考虑。
为了能够突出每个结构模式在上图的应用,请见下图:
代理和装饰器(红色框)
DeviceManagerSecurityProxy实现了DeviceManager接口,同时也持有一个DeviceManager的实现对象的引用,目的是在委派给真正的DeviceManager的实现对象执行设备管理操作之前,需要实现执行权限验证的操作,以确定此次调用是合法的。
装饰器和代理很容易混淆,就因为它们在代码的实现上完全一样,区别仅仅在于模式解决的问题域不同:代理在于控制被代理的对象;装饰器则是增强被装饰对象的能力或行为。我倒是觉得,在实际应用中没有必要在区分二者上让自己抓狂,毕竟代码的实现结构没有什么区别,何必在乎它的叫法呢?
适配器(绿色框)
DeviceManager定义了addDevice的方法,其实现恰好可以复用DeviceFactory的factory方法以创建一个Device的实例,那么这里的AbstactDeviceManager就担当了适配器的角色。这里是一个对象适配器模式的实现。
桥梁(橙色框)
DeviceManager抽象了设备管理的行为,但像启动、停止设备的操作是需要Device的实现类进行底层实现的,这正如桥梁模式的用意——“将抽象化和实现化脱耦,使得二者可以独立变化”。
合成(紫色框)
在设备管理的界面上,通常习惯用树形目录来呈现设备单元。每个设备自然就是树叶,当然为了方便管理,我们需要逻辑设备(LogicalDevice)这样类似设备组的概念,它关联一到多个物理设备,也就成了一个树节点。这样,当有需要对同一组设备进行操作的时候,也就只用操作逻辑设备就行了。这里是个安全式合成模式的实现。
亨元(黑色框)
这是结构模式中最为复杂的一个模式,主要用意在于共享对象实例,减少内存消耗。这里通过亨元模式来避免对统一设备的重复添加,尽管这样应用亨元模式有点牵强:P。
不过个人觉得,亨元模式的核心在于控制对象的创建,为什么GOF要将它列为结构模式的一种,这让我有点迷惑。
门面
图中貌似没有标出门面模式的应用,其实它的应用体现就是DeviceManager,它是设备管理子系统的统一接口,外部系统只需要通过它就可以享受所有设备管理子系统提供的服务了。
小结
结构模式可归结为两个关键字:
- 接口 接口明确规定了系统(或模块)的结构;
- 复用扩展 基于接口进行对复用原有组件的基础上添加新的行为,或是对原有行为的一种组合应用。
- 大小: 50.2 KB
- 描述: 设备管理类图
- 大小: 24.4 KB
分享到:
相关推荐
1 创建给定图的存储结构,从邻接表和邻接矩阵两种存储方式中选择一种。 2 对所创建的图进行深度和广度优先搜索遍历,给出遍历过程中的顶点序列。 3 求图的最小生成树,按构造顺序输出边的序列。(两种方法都要求!)...
第一篇分为8章,介绍了软件体系结构的基础理论,包括软件体系结构的概念及演化、软件建模基础、软件体系结构的形式化、软件体系结构的风格、体系结构的描述语言、软件质量建模、设计模式等内容。第二篇分为4章,首先...
该资源是一份关于数据结构知识的总结与结构网图。它包含了数据结构的内容概要、适用人群、使用场景及目标。 内容概要: 该资源涵盖了常见的数据结构,例如数组、链表、栈、队列、树、图等。每种数据结构都有详细的...
计算机1、翻译和解释的区别和联系? 区别:翻译是整个程序转换,解释是低级机器的一串语句仿真高级机器的一条语句。 联系:都是高级机器程序在低级机器上执行的必须步骤。...系统结构简答题总结
内容涵盖:第一章绪论、算法衡量指标、第二章线性表、顺序表、链表、第三章栈和队、栈、栈的应用举例、队列、循环队列、第四章串、串的模式匹配、第五章数组和广义表、稀疏矩阵的压缩存储方法:、广义表、第六章树和...
软件架构风格是指某一特定应用领域中系统组织方式的惯用模式,以结构组织模式定义了一个系统家族。常见的架构风格有管道和过滤器模式、数据抽象/面向对象模式、基于事件的模式、分层模式、仓库模式、解释器模式、...
数据结构实验报告稀疏矩阵,实验报告的模式,稀疏矩阵的运用
框架是特定应用领域问题的体系结构模式,定义了基本构成元素和关系,创建了基本的模块,定义了涉及功能更改和扩充的插件位置。 典型的软件体系结构风格包括管道/过滤器结构、数据流风格、批处理序列风格等。管道/...
数据结构线性表总结 数据结构中的线性表是指具有相同类型的数据元素构成的有限序列,根据存储结构的不同,线性表可以分为顺序表、单链表、循环链表、双向链表和双向循环链表等。 顺序表 顺序表是一种存储结构为...
模式识别得到了迅速发展, 并取得了丰富的理论成果, 其应用领域也己扩展到了文本分类、 语音识别、 图像识别、 视频识别、信息检索与数据挖掘等领域. 由于模式识别理论具有重要的学术价值和广泛的应用领 域 因而...
重点是关系模式完整性的分类和功能,以及关系代数中集合运算和关系运数据库系统及应用课程总结全文共6页,当前为第2页。数据库系统及应用课程总结全文共6页,当前为第2页。算。最后介绍了关系数据库系统的三层模式...
中断系统(5个中断源,2个优先级) 2.80C51的应用模式 总线型单片机应用模式 总线型应用的"三总线"模式; 非总线型应用的"多I/O"模式 3.80C51单片机的封装和引脚 总线型DIP40引脚封装 RST/VPO:复位信号输入引脚/...
数据结构考研知识点总结 数据结构是计算机科学中的一门基础学科,对于计算机科学的发展和应用有着非常重要的影响。数据结构考研知识点总结是考研大纲的一部分,旨在考察考生的数据结构知识和运算能力。 一、数据...
最后,本次总结还提到了计算机体系结构的软硬件取舍原则,包括考虑在现有硬件、器件条件下的性能价格比、考虑到准备采用和可能采用的组成技术、不能仅从“硬”的角度考虑如何便于应用组成技术的成果和便于发挥器件...
12. 数据结构的设计需要考虑数据的存储结构、访问方式和操作策略,以满足不同的应用需求。 13. 数据结构的实现需要考虑算法的时间复杂度和空间复杂度,选择合适的数据结构和算法以提高系统的性能。 14. 数据结构的...
总结。 使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软 件工程的基石,如同大厦的一块块...
数据结构知识点总结 数据结构是计算机科学中的一门基础学科,它研究的是计算机中数据的存储、组织和使用方式。在计算机科学中,数据结构是一种组织和存储数据的方式,使得数据可以被高效地存储、检索和使用。 在...
本实验报告的主要目的是设计适配器模式(Adapter)以掌握“结构型模式”的工作原理、应用环境和应用方法。实验中,我们将使用 Java 语言设计一个仿生机器人,使用适配器模式使得机器人能够模拟各种动物行为。 一、...
数据结构--栈与队列的应用 栈是一种常用的数据结构,它是一种后进先出的数据结构,即最后入栈的元素最先出栈。栈的应用非常广泛,如解决递归问题、实现深度优先搜索、实现括号匹配等。 在栈的应用中,我们需要设计...
《感知结构概念》是对作者多年教学经验的总结,其特点可概括为:在章节编排上采用了“菜单”式结构,多数章节的内容是相对独立的,因此读者可依据个人兴趣而非各章的顺序来阅读。通过浏览与《感知结构概念》配套的...