诊断Java代码: "杀手组合"― mixin、Jam和单元测试[Java编程]
本文“诊断Java代码: "杀手组合"― mixin、Jam和单元测试[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
在 Java 语言中得到单担当编程的安全性需求付出极大的代价:有时必须沿着担当层次构造中的多条途径复制代码.要重新得到单担当 Java 代码中所失去的大大都表示,我们可以将 mixin集成为一个扩大.本月,Eric Allen 注释了 mixin(那些由它们的父类参数化的类)的概念,以及它们若何能帮忙单元测试.他还描写了基于 mixin 编程的工具,并谈论了将 mixin 增添到您的 Java 代码中的大概办法.
自从面向对象的编程呈现以来,OO 语言计划中一向存在着一个困扰人的基本问题.一方面,我们在域解析历程中开辟的本质是有意利用从多个父类担当的类.那是因为实际世界中的对象不会刚好合适一个简单的单担当层次构造.您最爱好的啤酒大概口感既好纯度 又对比高.另一方面,在编程语言中允很多重担当的后果是语义极端复杂.
在语言中引入这样的复杂性常常会使发生错误的概率增添,因此 Java 语言已经保持采取单担当的办法(接口担当除外,此中的语义要简单得多).后来果是,Java 程序中的很多类构造要末包含沿着担当层次构造的多个分支复制的代码,要末包含通过利用责任链(Chain of Responsibility)计划情势、号令(Command)计划情势或战略(Strategy)计划情势而增添的各个间接级别.
比方,请考虑下面这个用于 GUI 库可转动窗格的 UML 解析图示例:
图 1. 挑选 GUI 元素的解析图
抱负情形下,我们但愿将这个图直接转换成 Java 编程中的类层次构造.但是,因为 Java 编程是单担当,所以我们不能这么做.就算多重接口担当答应我们构造对应的接口集,但是实现这些接口的类不能直接遵守该构造.另一种办法是,我们要末必须沿着担当层次构造中的多条途径复制代码,要末利用战略情势(或别的利用限制的一些诀窍)来避免复制代码.这两种办法都不能完好让人称心.
博采众长
但是假如多重担当太简单出错,而单担当又太范围,那么在 Java 编程中能否可以增添一些语言特点,这些语言特点会向我们供应集合这两种办法的长处呢?答案是有的 ― 它就是 mixin.
mixin 是那些由它们的父类参数化的类.它们也可以被认为是将类映射到新子类的函数.按照特定上下文的要求,可以用差别的父类实例化 mixin.
比方,以下所示,通过利用 mixin 可以实现图 1 中 ScrollPane 的类层次构造(此中,存在定向的虚线代表从 mixin 到父类的实例化关系):
图 2. mixin 担当图
在图 2 中,我们已经将类 Scrollable 转换成 mixin,它可以担当差别上下文中的差别类.在这个上下文中,我们实例化 Scrollable 以担当 Pane ,来成立 ScrollPane .我们也可以实例化 Scrollable 以担当 Dialog ,并且我们可以对它实例化以担当差别上下文所需的全部种类的别的 GUI 组件.
以上是“诊断Java代码: "杀手组合"― mixin、Jam和单元测试[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |