诊断Java代码: 消除包间的耦合关联[Java编程]
本文“诊断Java代码: 消除包间的耦合关联[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
测试优先编程(test-first programming)中反复碰到的一个问题是,仿佛不大概对程序的很多部份举行自动测试.特别当程序在很大程度上要操纵外部资源和库时,仿佛很难对它举行测试,因为没有很好的办法来模拟程序与这些外部资源的衔接.
但是,固然只利用 Java 代码很难测试这样的程序,但有一种范例的编程(带有开辟工具)可以办理这个问题 ― 基于组件的编程.
基于组件的编程和 Java 语言
我所说的基于组件的编程是指什么?我只是指,编程时程序的各个单元处于分布状况,而不是象 JavaBeans 或近似技术这样的运行时“组件”.
从概念上讲,这些分布的各个单元大致近似于 Java 包.但是,Java 语言中的包非常受限,因为它们彼此之间是耦合的.每个包中的类与它们导入的包之间是硬衔接的(因为这些类必须显式地引用所导入的包).
由于这些包之间是彼此耦合的,因此很难统一用供应同一功效的别的包的引用来替换程序中这些包的引用.
一样,独立开辟的各个团队大概无领悟用到反复的包名,这些团队试牟利用对方的包时,就会惹起问题.为确保包名的唯一性,Sun 激烈主张每个开辟团队利用这样的约定:用倒序布列的因特网地址作为团队开辟的全部包的前缀.开辟人员普通都服从这个约定,但未必老是如此.
但是即便严峻服从了这个包命名约定,仍旧有别的一些缘由使程序员想解除组件之间的耦合.此中一个缘由是,这样可以更有效地测试这些组件 ― 在谈到基于组件的编程工具(Jiazzi 组件系统)时,会注释这一点.
Jiazzi:针对 Java 语言的组件系统
Jiazzi 是一个富有前途的、用 Java 语言举行基于组件编程的系统,它与 JVM 完好兼容,并且完好解除了各组件间的耦合,它是犹他大学计算机科学系所开辟的一个项目.这个系统使程序员可以叠加组件,并在现有 Java 代码之上将这些组件衔接起来.而不需改正 Java 语言或 JVM.
开辟人员的描写
Jiazzi 开辟人员是这样描写的:
……是这样一个系统,支持用 Java 编写的大规模二进制组件的构造 [增添了对用 Java 编写的大规模二进制组件的支持].可以将 Jiazzi 组件当作是对 Java 包的泛化,同时向这些 Java 包增添了外部链接和独立编译的支持.Jiazzi 组件很实用,因为它们是从尺度 Java 源代码构造出来的.Jiazzi 既不需求对 Java 语言扩大,也不需求对编写 Java 源码举行特别的约定,这些扩大和约定将写在组件内部.我们的组件是富有表现力的,因为 Jiazzi 支持循环组件链接和 mixin,在开放的类情势中一同利用了循环组件链接和 mixin,这种情势支持将具有新特点的模块增添到现有的类.
当前的 Jiazzi 实现用 链接程序(linker,用于操作组件)和 存根生成器(使 Jiazzi 可以与通例的 Java 源码编译器共同利用)集成进了 Java 平台.Jiazzi 中的组件可以包含、导入和导出 Java 类,可以跨组件边界利用 Java 平台的用于担当的语言内支持.除了富有表现力之外,这些组件还很结实 ― 可以辨别对组件的实现和链接举行范例查抄.
察看解除组件的耦合
让我们研究一个 Java 包 view 的简短示例,来看一下 Jiazzi 若何解除组件间的耦合,这个示例用到了 GUI 库包.我们将调用 toolkit 包.为了引用该包中的全部类,在我们的包中源文件的开首,安排了一条 import 语句:
package view;
import toolkit.*;
...
以上是“诊断Java代码: 消除包间的耦合关联[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |