用于未来类型更改的Java模式

时间:2010-07-14 11:52:23

标签: java

针对预期的类型更改进行编程的最佳方法是什么?说,我将来可能不得不使用Joda DateTime而不是Java Date。由于Java不鼓励像typedef这样的反模式,所以确保将来轻松重构的最佳方法是什么 感谢。

7 个答案:

答案 0 :(得分:5)

当然,“单一责任原则”或其附近的内容和封装应该有助于限制依赖性蠕变。

然而,基本类型的选择是架构决策。如果要更改字符串或整数类型,则需要更改代码。日期差别不大。

答案 1 :(得分:4)

接口编程和适当的分层是我能想到的最好的防御措施。

当您将完成的内容与完成后的内容分开时,只要界面不变,您就可以在不影响客户端的情况下更改实现。

如果您必须更改界面,或者您最终完成了一个新问题,那么所有赌注都将被取消。没有语言具有内在的洞察力。

答案 2 :(得分:2)

将有问题的API /类型包含在wrapper interface后面,并仅通过包装器使用它。然后,您只需要更改包装器代码来切换实现。

这将是一般解决方案。但是,Tom正确地指出Date是如此基本的类型,选择它应该是一个架构决策,不要经常改变。

答案 3 :(得分:1)

听起来像你想要完成“动态重新分类”, 我认为您应该可以使用State pattern来实现此目标。
请在此处查看示例:http://cnx.org/content/m17225/latest/

答案 4 :(得分:1)

你可以试试eclipse的IAdaptable

答案 5 :(得分:1)

  

编程的最佳方式是什么?   与预期的类型变化相反。

让您的设计尽可能简洁,并保持一系列良好的单元测试。

这可以帮助您进行所有未来的更改,包括未预料到的更改(更常见)。

答案 6 :(得分:0)

我对此的看法是,一个好的Java IDE可以大大减少大规模数据类型更改的痛苦。您搜索代码使用旧类的点,替换为新类,并修复随后的编译错误,然后重复。完成更改后,运行您的单元/回归测试,修复错误并(触摸木材!)您已完成。

好的......可能不那么简单。特别是:

  • 很难找到反光依赖。
  • 很难找到外部接线/配置文件中的依赖项。
  • 由许多人编写/维护的组件组成的大规模应用程序可能会出现问题。 (你不可能只是破解每个人的代码。)