gpt4 book ai didi

java - 如何修改第三方代码

转载 作者:搜寻专家 更新时间:2023-11-01 03:26:48 25 4
gpt4 key购买 nike

一个本应很简单的架构/设计问题:

我们的 Java 应用程序依赖于第三方代码。但是,这个第三方代码做了一些我不喜欢的事情(将时区设置为 GMT;我想根据应用程序的 TimeZoneID 设置不同的时区)。我有哪些选择?

1- 我不能简单地扩展第三方类并覆盖不需要的行为,因为在我们的应用程序中到处都有第三方类的调用者(这是我们开始继承应用程序的方式) .

2- 也许过于侵入性的解决方案是编写我们自己的第三方代码的等价物并依赖于它。但是,这可能太多了,也太具有侵入性了。

3- 我看了一些 Spring AOP(和 aspectJ)的东西来做加载时间织入。我没有深入研究它,但在我看来,因为第三方代码调用了 java.util.Timezone.setDefault(GMTTimeZone); (与调用我们自己编写/管理的类相反)这不是那么容易完成的。我在这里可能是错的,也许我仍然可以绕过 java.util.Timezone.setDefault()。如果这是真的,请告诉我,这几乎是我的(唯一)解决方案。

4- 我是否遗漏了什么,或者这几乎是所有可用的选项?

最佳答案

首先,您可以联系第三方,让他们更改代码。这并不像你想象的那么长。这会惹恼您,可能还会惹恼他们的其他客户。

此外,您可以仅将子类用作代码的代理。您项目中的其他人不一定非要使用您的子类。您可以清除不需要的行为并将更改抽象出您的代码。您也可以在要求供应商更改行为时将此代码发送给供应商!

最后,最简单的解决方案是只获取返回值并在线修复它。这是现在完成它的最快方法,但这不是一个好的模式,因为您引入的代码仅用于解决其他人的问题。

关于java - 如何修改第三方代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12011542/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com