设计模式及其在软件设计中的应用研究

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
刘海岩#!锁志海%!吕!青!!梁建龙#
! 西安交通大学软件研究所" "西安# "西安# # : > # $ $ ? " % :西安交通大学科学与技术处" > # $ $ ? " 西安交通大学校长办公室信息中心 " " 西安 $ ! : > # $ $ ? "
摘要%总结了不同模式适用于不同应用的一般规律! 分析了常用模式的内涵及侧重点! 提出了设计模式应用 于软件设计的策略! 即抽象求解问题" 划分问题类型" 模式初选" 模式匹配" 根据问题进行模式变体" 软件体系 结构细化" 设计优化" 性能优化及设计质量度量: 通过电力行业绘图平台的实际应用! 给出了基于软件度量标 准下的系统稳定性参数的计算方法: 分析与实地测试表明! 所提策略能够优化软件的设计及性能! 为使用者 提供了一种快速选取设计模式的途径: 关键词%设计模式# 模式匹配# 软件度量 中图分类号%2 $ C ! # # $ % & ! " D > /! % $ $ & # $ # $ ? ! $ & !文献标识码%,!文章编号% ! ! !
在 (_2 基础上进一步发展起来的$ 其描述更加清 晰和统一$ 符合大部分软件设计人员的习惯$ 也便于 设 计 人 员 的 理 解 和 应 用: 形式化语言主要包括 # #’ @ M S B 8 E C ) 6 G (_# , @ 4 , @ (#B @ -# C @ -# Q % & 其中 @ C @ 6 C 等$ M S B 8! 侧重于描述设计模式中参与 者的交互行为:
第! "卷!第# $期 % $ $ &年# $月
西!安!交!通!大!学!学!报 ’ ( ) * + , -( ./ 0 1 , +’ 0 , ( 2 ( + 3 )+ 0 4 5 * 6 0 2 7
4 8 9 : ! " # $ !; ( < = : % $ $ &
设计模式及其在软件设计中的应用研究
%2 ! 9 : % * # + % O EP E J E H G 9 9 G T S 8 K N M K K E H E J = N E S M JF G = = E H J S G N G = M J = 8R G H M 8 L S G 9 M < G = M 8 J ST E H E H E R M E T E NG J N P F P F F = O E M J = E J S M 8 J8 K 8 H N M J G H G = = E H JG J N M = S K 8 < L ST E H EG J G 9 X E N : 2 O ES = H G = E 9 M J O EN E S M JF G = = E H J= 8 QF Q P QG F F Q P= P " " " " S 8 K = T G H EN E S M J H 8 U 9 E I= EF G H = M = M 8 J M J < 9 L N M J H 8 U 9 E I V S 8 9 R M J U S = H G < = M 8 J M J M = M G 9F G = = E H JS E 9 E < = M 8 J P F Q F PF PG " " S 8 K = T G H EG H < O M = E < = L H E H E K M J E I E J = N E S M J8 = M V G = = E H JI G = < O G = = E H JR G H M G = M 8 JG < < 8 H N M J = 8 = O EF H 8 U 9 E I" P F F F P " I M X G = M 8 J E H K 8 H I G J < E 8 = M I M X G = M 8 JG J NN E S M Ja L G 9 M = E G S L H E I E J =T G S H 8 R M N E N : 2 O E < G 9 < L 9 G = M 8 JI E = O 8 N F F P QI F 8 K = O ES S = E IS = G U M 9 M = G H G I E = E H SU G S E N8 J= O ES 8 K = T G H EI E G S L H E I E J =S = G J N G H N ST G SP M R E J= O H 8 L O= O E Q QF P H G < = M < G 9 G 9 M < G = M 8 J8 K = O EF 9 8 = = M J 9 G = K 8 H I= 8= O E K M E 9 N8 KE 9 E < = H M < G 9 M J N L S = H : 2 O EF H G < = M < EG J NG J G 9 S M S F F F PF Q Q " S O 8 T= O G = = O EF H 8 8 S E NS = H G = E G J8 = M I M X E = O ES 8 K = T G H EN E S M JG J N M = SF E H K 8 H I G J < E G J NF H 8 R M N EL S E H S F P Q< F P T M = OGT G = 8S E 9 E < = N E S M JF G = = E H J : Q P % # # 2 2 0 1 $7 # 2 3 " ) $ ; ( . 1 * " : 8 0 5 ) $( # 2 2 0 1 $ ( 5 . 2 6 # 1 07 0 # 5 ’ 1 0 7 0 $ 2 % %# E 4 " $ 年代中期"基于面向对象理论的设计模式 !! 得到了进一步的发展"之后 5 H M < O3 G II G 等人给 设计模式关注的是特定设 : 计问题及其解决方案" 它描述了如何利用面向对象
# !模式的选取
各种模式均有其自身特点和适用范围$ 所以在 选取模式前应充分了解模式的内涵及侧重点$ 发掘 出不同模式的适用规律: 常用模式的应用规律有如下几种: ! " 享元 ! " 模式: 该模式可用于实现 # . 9 T E M O = Q P 共享细粒度符号对象$ 主要解决由于系统存在大量 类似的# 具有共性的对象而严重影响系统性能的问 题: 此时$ 可将对象的共同信息提取出来并作为一个 新的 . 而原有对象需要的且重复的 9 T E M O =对象$ Q P 信息描述只需要在一个共享的 . 9 T E M O =对象中描 Q P 述$ 从而大大削减了应用程序创建的对象$ 降低了程 序内存的占用率$ 增强了程序的性能: 如果一个应用程序需要显示的对象同属于一种 类型$ 就可以考虑用 . 9 T E M O = 模式来共享一定数 Q P 量的对象: 例如$ 在’ 字符串# G R G程序中$ 6 T M J P树 节点# 组件边界等都利用了 . 如果从一个 9 T E M O = : Q P 数据库中读取一系列字符串$ 这些字符串中有许多 是重复的$ 那么可将这些字符串储存在 . 9 T E M O = Q P 池! " 中: 又如字处理软件$若以单字作为一个 8 8 9 F 对象的话$ 要是有数千个字则需数千个对象$ 这在处 理字的同时无疑要耗费很大的内存资源$ 所以需要 找出这些对象群的共同点$ 设计一个元类$并将共 享的类封装起来: ! " 代理! " 模式: 该模式主要是通过代理 % C H 8 W Q 来控制对象的访问$ 所覆盖的应用场合从小结构到 涉及整个系统的大结构$ 并具有以下功能: 防止越权访问功能$ 主要是对不同级别的用户 进行权限划分和管理控制$ 如论坛# 银行信息# 图书 档案管理等系统的管理控制: 存取优化功能$ 正如 T 8 H N 文档中有很大的图 片$ 要打开该文档通常需要花费很长时间$ 这时需要 做图片 C 以便于提高存取 H 8 W Q来代替真正的图片$ 万方数据 效率:
收稿日期% " 女" 副教授: % $ $ & $ # # % : # " ? D ! ! !作者简介%刘海岩! "$ !基金项目%教育部高等学校博士学科点专项科研基
ቤተ መጻሕፍቲ ባይዱ
# $ ? ?
西!安!交!通!大!学!学!报!!!!!!!!!!!!!!!!!!第! "卷 !
的过渡描述不够流畅: 对象建模技术! 描述法 (_2" 实例以及 是利用类图和对象图对设计模式中的类# 整体模式结构进行图形描述的方法$ 而 )_- 是
出了设计模式的定义
的基本概念和机制来解决可扩展的软件设计中经常 出现的问题" 并针对设计问题给出可复用的解决方 案" 而这个解决方案是对反复出现的设计结构进行 识别和抽象得到的: 同时" 每个模式都伴有定义的语
万方数据 金资助项目 ! $ # 陕西省自然科学基金资助项目! $ % $ $ ? $ [ " D $ [ ! % $ $ ? . ! & :
% & %
客户端存取远程服务器信息的功能$ 如果直接 可能会因网络 操作0 J = E H J E =远端服务器上的对象$ 运行缓慢而影响访问速度$ 这时需要利用 C H 8 W : Q ! " 该模式的特点是在对象间 ! ( U S E H R E H模式: 定义一对多的依赖关系$ 当一个对象的状态发生改 变时$ 所有依赖它的对象都将被告知并自动更新$ 主 要应用如下: 在界面设计中的应用: 因为应用程序的开发往 往要求用户界面与业务逻辑分离$而 ( U S E H R E H模 式就是解决此类问题的最常用的设计模式: 解决对象间的状态同步问题: 当一个用户视图 中的数据被其他用户改动后$ 后端的数据库能够自 动更新$ 而当数据库以其他方式更新后$ 用户视图中 的数据显示也会随之改变: 另外$ ( U S E H R E模式还适用于实时更新的系统$ 如股票系统# 税务系统# 网上商店等: ! " 组合 ! " 模式: 该模式是将对象组 ? B 8 I 8 S M = E F 织成( 整体 部分 ) 的层次结构$即将对象组织成树 V 状结构$ 从而保证客户机在使用单个对象和复合对 象上的一致性: 这样做$ 客户端不但能一致地使用组 合结构或单个对象$ 简化了客户端的调用$ 也可以在 组合体内部加入新的对象$ 而用户则无需更改代码: 诸 B 8 I 8 S M = E模式主要应用于树形结构系统$ F 如论坛这类典型的系统$ 另外还常用于一些涉及产 品结构和配置管理的系统$ 此类系统可将产品的结 构和配置看作是一种产品结构树$ 如产品由零件# 部 件组成$ 部件又由零件# 部件组成: 这种嵌套递归关 系通常使用 B 8 I 8 S M = E模式来表示: F 例如图形 B 8 I 8 S M = E模式也适用于界面设计$ F 而这些对象的操作基本相同$ 由若干基本对象组成$ 亦即移动# 缩放# 绘制# 拷贝# 粘贴等: 使用 B 8 I 8 S V F 从而提高代码的可重用度: M = E模式可以规范设计$ ! " 单件! " 模式: 它强调一个类仅有一 & 6 M J 9 E = 8 J P 个实例$ 主要体现系统的多选一的特性: ! " 命令 ! " 模式: 它将请求与执行分 [ B 8 II G J N 离$ 允许系统以不同请求# 队列或日志请求作为参数 来表示客户$ 并支持可取消的操作: ! " 迭代器 ! " 模式: 它提供了连续访问 > 0 = E H G = 8 H 一个聚集对象中的各个元素$ 而不需要暴露对象的 内部表示方法$ 适用于文档的查找和遍历: ! " 策略! " 模式: 它定义了一系列的算 D 6 = H G = E P Q 法$ 对每个算法进行封装$ 允许交互: 利用该模式可 使算法的变化独立于使用它的客户: 还有其他模式也具有类似的适用于不同应用的
3 ( : & 5) # % % ( * 5 : # 5 "@ 2 ( & *! , & + # % & 1 5 : % 11 A % . # * (3 ( : & 5 0 $ $ 0
# % " " H ) ’I # ) # $ J ’ .! " ) " # ) H K, ) $ H ) # $ ) # $ 4 . $ : %!" %L %#
! " " " # " " # : 6 8 K = T G H E 0 J S = M = L = E / M 1 G J’ M G 8 = 8 J J M R E H S M = / M 1 G J> # $ $ ? " B O M J G % : 6 < M E J < E G J N2 E < O J 8 9 8 K K M < E / M 1 G J’ M G 8 = 8 J J M R E H S M = P) Q P Q( P) Q " # " " " $ / M 1 G J> # $ $ ? " B O M J G ! : 0 J K 8 H I G = M 8 JB E J = E H 8 KC H E S M N E J =( K K M < E / M 1 G J’ M G 8 = 8 J J M R E H S M = / M 1 G J> # $ $ ? " B O M J G P) Q
& ’ #
语境解释了模式的适用情况" 强度是语境 境和强度" 中的元素: 如果问题的环境与模式的语境和强度相 匹配" 该模式便可应用: 因此" 设计模式是软件人员 在面向对象软件设计中" 经多次验证的成功解的记 录与提炼: 设计模式的描述方法包括自然语言描述法( 统 一标记语言! 描述法( 形式化语言描述法: 自 )_-$ 然语言描述法比较简单( 方便" 但在现实与设计之间
相关文档
最新文档