- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
外文翻译基本框架设计模式
基本框架设计模式
Essential Framework Design
Patterns
Wolfgang Pree
University of Constance
D-78434 Constance, Germany
Voice: +49.7531.88.44.33; Fax: +49.7531.88.35.77
E-mail: pree@informatik.uni-konstanz.de
摘要
大多数优秀的面向对象的框架仍然或多或少的处于混乱发展过程中,通常进行的类似设置的研究。这种贡献首先涉及几点框架建设的基本原则。框架代表的是特定域的通用解决方案,使面向对象软件配置的全部潜力得以开发:不仅源代码和单个组件,体系结构设计也被重复使用。预定义细化发生的适应点我们称之为扩展点。如果发现这些扩展点有明确的需求阶段,它们能以基本的形式组合成特定域的设计模式。这种扩展点驱动的框架设计可以为一个更系统的发展过程做出贡献。
关键词:设计模式,框架,面向对象设计,面向对象软件发展,软件可重用性
框架类型
框架非常适合大量类似的应用程序的重写。框架结构定义了一种通过创建特定领域的应用程序的高级语言专业化(=适应)。特定领域的一种扩展槽我们称之为扩展点。如果一个框架提供了足够的可以改编的扩展点,我们就认为这是一个具备合格属性的框架。例如,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)
可用的框架既不是纯粹的白盒框也不是纯粹的黑盒框架。如果框架大量回收再利用,无数专家都建议用黑盒框架而不是只提供一个默认界面的白盒框架。因此当成熟后白盒框架将越来越多趋向于黑盒框架。
钩的灵活性
类方法可以分为钩方法和模板方法:钩方法被视为具有更多可灵活调用的扩展点问题复杂的方法的地方。这些复杂的方法通常被称为模板方法(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。钩类准参数化模板类,注意这是一个上下文相关的区别而不考虑两种类的复杂性。结果是,灵活性结构原则的基本设置可以从考虑两个类之间的所有可能组合派生而来。因为模板和钩类可以具备任何的复杂性,下面讨论的建设原则就扩大了规模。所以领域特定的语义模板类和钩类淡出,如何实现框架的可变性变得清晰。
统一与分离模式
如果模板类和挂钩类统一在一个类中,如图 4 (a)称为TH,只能通过继承得到,那样的话应用程序需要重新启动。
图4模板类和钩类的统一(a)与分离(b)
分离模板和挂钩类等同于(抽象)这些类的耦合对象,使T对象的行为部分被修改,即插入特定H 对象。
T和H直接关联表示T对象拥有H对象。T对象为了调用钩方法必须将消息发送到相关的H对象,所以这个关联变得重要。通常一个实例变量T保持这样一个关联。其他的可能是通过参数传递的方法对象引用全局变量或临时变量。T和H对象之间的实际耦合是无关的实现细节,不作进一步讨论。关联所表示的语义也是一样。例如,对象的关联是指向用途或是关系的一部分取决于在特定的上下文和需要,不需要
原创力文档


文档评论(0)