<b>构建用于正则表达式的抽象Java API</b>[Java编程]
本文“<b>构建用于正则表达式的抽象Java API</b>[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
当您在 Java 中利用正则表达式时,依靠某一具体 regexp 库普通不是个好 主张.假如利用抽象层,您可以在差别 regexp 库之间切换,降低您的代码与特 定库之间的耦合,并能挑选哪个库最合适您的需求.假如您正在考虑在下一个项 目中利用 Java regexp 库,软件开辟人员 Jose San Leandro Armendariz 将向 您演示若何使代码独立于所挑选的具体库.并让您进一步理解 regexp 及其工作 原理,随后还供应了一些操练.
简介
固然您大概认为编写需求解析文本的 Java 利用程序是一项简单任务,但象 很多事情一样,它会很快变得复杂起来.那的确是我在编写代码以解析 HTML 页 面时的经验.开始的时刻,我无领悟利用 Perl5 正则表达式(regexp).但是 ,由于某些缘由(稍后阐明),我后来常常利用它们.
后台知识
在我的经验中,大大都 Java 开辟人员都需求解析某种文本.普通,这意味 着他们最初要花一些时间利用象 indexOf 或 substring 那样的与 Java 字符串 相关的函数或办法,并且但愿输入格局永久不变.但是,假如输入格局改变,那 么用于读取新格局的代码保护起来就会变得更复杂、更艰难.最后,代码大概需 要支持自动换行(word wrapping)、辨别大小写等.
由于逻辑变得越发复杂,所以保护也变得很艰难.因为任何更改都大概产生 副作用并使文本解析器的别的部份终止工作,所以开辟人员需求时间改正这些小 错误.
有一定 Perl 经验的开辟人员大概也有过利用正则表达式的经验.假如够幸 运(或优异)的话,这位开辟人员可以说服团队别的的人(或至少是团队带领) 利用这项技术.新的办法将撤消编写用来调用 String 办法的多行代码,它意味 着将解析器逻辑的核心拜托出去,并替换为 regexp 库.
承受了有 Perl5 经验的开辟人员的倡议后,团队必须挑选哪个 regex 实现 最合适他们的项目.然后他们需求学习若何利用它.
在扼要地研究了从因特网上找到的众多可选筹划后,假定团队决意从人们更 熟习的库中挑选一个利用,如属于 Jakarta项目的 Oro.接下来,对解析器举行 较大程度地重构或几近重新编写,并且解析器终究利用了 Oro 的类,如 Perl5Compiler 、 Perl5Matcher 等.
这一决意的后果很明显:
代码与 Jakarta Oro 的类精密地耦合在一同.
团队承当了风险,因为不知道非功效性需求(如性能或线程模子)能否将得 到满意.
团队已耗费时间和财力来学习并重新编写代码,以使它利用 regexp 库.如 果他们的决意是错误的并且挑选了新的库,则这一工作在本钱上将不会有很大区 别,因为将需求再次重新编写代码.
即便库工作正常,假如他们决意应当迁移到全新的库(比方,包含在 JDK 1.4 中的库),怎么办?
去耦的好处
有没有办法使团队知道哪个实现最合适他们的需求呢(不但目前能将来也能 )?让我们试着探求答案.
避免依靠任何特定的实现
前面的情形在软件工程中非常常见.在有些情形中,这样的情形会招致较大 的投资和较长的延期.当不理解全部后果就作出决意并且抉择拟定人不太走运或 贫乏必须的经验时,就常常会发生这种情形.
以上是“<b>构建用于正则表达式的抽象Java API</b>[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |