已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基本框架设计模式Essential Framework DesignPatternsWolfgang PreeUniversity of ConstanceD-78434 Constance, GermanyVoice: +49.7531.88.44.33; Fax: +49.7531.88.35.77E-mail: preeinformatik.uni-konstanz.de摘要 大多数优秀的面向对象的框架仍然或多或少的处于混乱发展过程中,通常进行的类似设置的研究。这种贡献首先涉及几点框架建设的基本原则。框架代表的是特定域的通用解决方案,使面向对象软件配置的全部潜力得以开发:不仅源代码和单个组件,体系结构设计也被重复使用。预定义细化发生的适应点我们称之为扩展点。如果发现这些扩展点有明确的需求阶段,它们能以基本的形式组合成特定域的设计模式。这种扩展点驱动的框架设计可以为一个更系统的发展过程做出贡献。关键词:设计模式,框架,面向对象设计,面向对象软件发展,软件可重用性1. 框架类型 框架非常适合大量类似的应用程序的重写。框架结构定义了一种通过创建特定领域的应用程序的高级语言专业化(=适应)。特定领域的一种扩展槽我们称之为扩展点。如果一个框架提供了足够的可以改编的扩展点,我们就认为这是一个具备合格属性的框架。例如,Lewis et al. (1995 年) 提供大量高质量框架。白盒框架中的扩展点白盒框架由几个不完整的类组成,也就是类包含没有实际实现的办法。A类的抽象方法必须在子类中重写。这种类型的框架中的抽象方法形成扩展点。图 1 的示例框架中描述的A 类层次结构说明了一个白盒框架的这一特性。A类的抽象方法必须在子类中重写。这种类型的框架中的抽象方法形成扩展点。图1 示例框架类层次结构程序员通过衍生子类或重写父类的成员方法来修改白盒框架的方法。必须重写的方法意味着程序员必须在一定程度上了解框架的设计和实施的细节信息。黑盒框架的扩展点黑盒框架提供了现成的适应修改的组件。修改通过组装,而不是通过编程。扩展点还对应于重写方法,虽然适应框架的扩展点只是作为处理组件的一个整体。在图1中的类层次框架结构中,B类已经有两个子类 B1和B2提供默认实现的抽象方法。假如框架组件之间的交互如图2(a)所示(图2中线表示组件之间的交互。)应用程序与这一框架相适应,例如,通过实例化类 A1、B2插入相应的对象(请参阅图2(b).在B类该框架提供现成的子类;在类A中程序必须先创建子类。图2框架经专业组合前(a)后(b) 可用的框架既不是纯粹的白盒框也不是纯粹的黑盒框架。如果框架大量回收再利用,无数专家都建议用黑盒框架而不是只提供一个默认界面的白盒框架。因此当成熟后白盒框架将越来越多趋向于黑盒框架。2. 钩的灵活性 类方法可以分为钩方法和模板方法:钩方法被视为具有更多可灵活调用的扩展点问题复杂的方法的地方。这些复杂的方法通常被称为模板方法 模板方法不能与 c + + 模板构造混淆,它已具备完全不同的含义。(Wires-Brock et al., 1990 年10月 ;Gamma et al.,1995 年 ;Pree,1995年)。模板方法定义抽象类的行为方法或泛型的控制流或对象之间的交互。钩方法的基本思路是通过允许重写钩继承一个对象的更改,无需改动相应类的源代码的行为。图3体现了面向对象语言低耦合的这一原则。A 类的t()方法是调用钩方法 h()的模板方法,如图3(a)中所示。钩方法是一种抽象方法,只有空的或默认的实现。图(b)钩方法重写 A1子类。图3 (a)模板钩方法和(b)钩重载让我们定义一个包含正在讨论的钩类H和包含模板类T。钩类准参数化模板类,注意这是一个上下文相关的区别而不考虑两种类的复杂性。结果是,灵活性结构原则的基本设置可以从考虑两个类之间的所有可能组合派生而来。因为模板和钩类可以具备任何的复杂性,下面讨论的建设原则就扩大了规模。所以领域特定的语义模板类和钩类淡出,如何实现框架的可变性变得清晰。2.1. 统一与分离模式如果模板类和挂钩类统一在一个类中,如图 4 (a)称为TH,只能通过继承得到,那样的话应用程序需要重新启动。图4模板类和钩类的统一(a)与分离(b)分离模板和挂钩类等同于(抽象)这些类的耦合对象,使T对象的行为部分被修改,即插入特定H 对象。T和H直接关联表示T对象拥有H对象。T对象为了调用钩方法必须将消息发送到相关的H对象,所以这个关联变得重要。通常一个实例变量T保持这样一个关联。其他的可能是通过参数传递的方法对象引用全局变量或临时变量。T和H对象之间的实际耦合是无关的实现细节,不作进一步讨论。关联所表示的语义也是一样。例如,对象的关联是指向用途或是关系的一部分取决于在特定的上下文和需要,不需要区分这些核心领域的构建原则。一个分离模板和钩类也形成的前提下运行时的适应,定义H的子类,插入T的对象,同时应用程序正在运行。Gamma et al.,(1995年)和Pree(1996年)研究过一些非常有用的例子。2.2. 递归结合模式模板类也可以是钩类的派生类(见图 5(a)。在特例中,模板和挂类是统一的(见图 5(b)。递归成分有个共同点,他们允许建立关联对象的有向图。此外,一些模板方法的特定结构,这些组成保证在对象图中消息的转发。一个特定的结构模板的方法,这是典型的对这些成分,保证转发消息的对象图。简单的模板和钩类分离与更加复杂的递归分离的不同在于场地通过适合的组合被扩大。不是用直截了当的方式简单的插入两个对象,整个对象的有向图可以被组合。所涉及的问题在 Pree(1995年,1996年)中有详细讨论。图5模板和钩类的递归组合2.3. 钩作为Go模式目录条目的标识符名称下面我们假定读者对初期四人组 (Gamma et al.,1995)目录模式熟悉。Go 目录中的大量条目表示小框架,就是框架组成的几个类,少数基本的构造模式在大量或多或少领域无关的情况下应用。因此这些目录条目都对设计框架有很大帮助,因为它们说明了典型的钩语义。一般情况下,通过钩来保持灵活性使得目录条目的名称与语义方面有密切联系。2.4. 基于模板-钩分离的模式很多框架中心的目录条目依赖于模板和钩类的分离(见图 4(b)。两个目录模式,模板方法和桥梁模式,描述这项构建原则。以下目录模式基于抽象耦合:抽象工厂,生成器,命令,翻译,观测器,原型,状态和策略。请注意这些目录模式的名称与在特定的模式下保持灵活性语义方面对应。语义方面在特定的钩方法或类的名称再次被反映。例如,在命令模式“下何时以及如何完成请求”(Gamma et al.,1995年)代表扩展点的语义。钩方法的名称(实施()和钩类(命令)反映了这一点并且确定了整体目录条目格局的名称。2.5. 基于递归组成的模式 目录条目中的合成模式(见图5(a):T 和 H是1对多的关系),装饰模式(见图5(a)T和H是1对1的关系),责任链模式(见图 5(b)与递归模板-钩组合对应。3. 怎样去寻找特定领域模式早起阶段扩展点的辨别(如领域中的需求分析)应该成为发展过程中的一个显式活动。有两个原因:设计模式,在类似目录窗体中的展现,混合设计原则像及像上面概述的特定领域。当然,它作用不大,仅仅是将设计模式与语义分离,以骨架构建原则脱离框架设计。相反,这些构建原则一定要与框架被开发的域的语义相结合。扩展点的辨别提供了此信息。图6概述了基本建设原则与特定域的热点配对的协同效应。得到的结果是为特定域量身定做的设计模式。图6 基础框架结构原则+扩展点=特定域的设计模式扩展点标识可被扩展卡支持,成为领域专家和软件开发人员的通讯工具。Pree(1996)给出了扩展点卡的概念和当它们被应用时的详细案例研究。另外一个为什么显示扩展点有所帮助的原因是,可以源于下列现实世界开发框架的影响因素的研究:很少有两个或者更多个相似的随时可用的系统来研究它们的共性。通常情况下,一个太具体系统构成框架的基础发展。此外,共性应远远超出的灵活方面一种框架。如果一个框架的扩展点不明显多于标准点,该框架科技的核心利益,也就是说,一个广泛的标准化体系结构,削弱了。结果就是,关注扩展点似乎比尝试找到共性更加成功。4. 前景以上我们讨论开发框架的技术方面通过呈现设计模式的基本框架。组织措施与成功同样重要,因为开发框架需要完全背离今天的项目文化。戈德堡和鲁宾(1995 年)详细介绍了这些方面。参考文献1 Gamma E., Helm R., Johnson R. and Vlissides J. (1995). Design PatternsElements of Reusable Object-Oriented Software. Reading, Massachusetts: Addison-Wesley2 Goldberg A., Rubin K. (1995). Succeeding with ObjectsDecision Frameworks for Project Management. Reading, Massachusetts: Addison-Wesley3 Lewis T. et al. (1995).Object-Oriented Application Frameworks. Greenwich, CT: Manning Publications/Prentice Hall.4 Pree W. (1995). Design Patterns for Object-Oriented Software Development. Reading, MA: Add
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 11201采面回撤专项安全风险辨识评估报告
- 静态呼吸图法:有序聚合物多孔膜的制备工艺与多元应用探究
- 青藏高原祁连圆柏与大果圆柏森林生长衰退:历史回溯与诱因解析
- 审计工作底稿
- 中学生期末数学模拟试题集锦
- 生产车间人员调度管理方案
- 医院灾害脆弱性分析报告
- 零价铁-厌氧生物耦合法:印染废水处理的作用机制与调控策略
- 雌激素对缺氧复氧心肌细胞中NF-κB及粘附分子表达的调控机制探究
- 蔬果礼盒运营方案策划
- 江苏省无锡市2025-2026学年高二下学期期末考试生物试题(文字版含答案)
- 2026中煤集团山西有限公司面向社会公开招聘292人笔试历年常考点试题专练附带答案详解
- 云南省2026年中考英语真题
- 2026年广东事业单位招聘考试真题及答案
- 统编版小升初语文标点符号重点知识梳理 专项练习卷(含答案)
- 2026海南陵水黎族自治县县属国有企业第一批招聘60人考试模拟试题及答案详解
- 中山大学2026年强基计划面试+体育测试模拟试题及答案解析
- 2026年7月浙江高中学业水平考试化学试卷试题(含答案解析)
- 2026年广东佛山市初二地理生物会考真题试卷(含答案)
- 2026年高一历史学业水平考试知识点归纳总结(复习必背)
- 五年级下数学水中浸物问题20道pdf
评论
0/150
提交评论