如果需要更改库功能我该怎么办

我在 Java 库(open-m3u)中有一个类,我需要稍微改变一下。该功能很容易实现,无需使用库。该库是开源的,所以我可以访问它的所有代码。该类的制作方式使得继承它甚至改变那一小部分都是不可能的。我的问题是我应该复制那个类和它所依赖的所有类并将它们放在我自己的代码库中并更改功能还是应该自己实现功能。或者还有其他选择吗?



MMMHUHU
浏览 89回答 3
3回答

犯罪嫌疑人X

该功能很容易实现,无需使用库。恕我直言,那就是要走的路。您的其他选择是:围绕库构建功能:您说在您的情况下这是不可能的。在您自己的源代码控制系统中创建库的一个分支。这意味着您必须使该存储库与库维护者保持同步,这意味着永久性负担。你必须检查图书馆的许可证关于分叉的内容。将相关部分复制到您的代码库中并在那里进行修改。然后,您将无法从未来的增强或错误修复中获利,但仍然必须维护由其他人创建和架构的代码,并且不完全符合您的要求。你必须检查图书馆的许可证关于将部分复制到外国代码库中的内容。他们都有自己的缺点。总而言之:在 25 年的专业软件开发中,我看到了外部库的成功使用和完全的失败。有时,我们在评估现有库(然后发现没有任何匹配项)上投入的时间比我们自己实施项目特定解决方案所需的时间更多。您可以不用的每个库都使配置管理和部署变得更加容易。

摇曳的蔷薇

装饰器模式允许您向现有对象添加新功能。如果你使用的 java 库有这样的类:public class LibraryClass implement ILibraryInterface {    public void someMethod() {        ...    }}然后你可以创建Decorator类:public class LibraryClassDecorator implement ILibraryInterface {    private LibraryClass libObj;    public LibraryClassDecorator(LibraryClass libObj) {        this.libObj = libObj;    }    public void someMethod() {        libObj.someMethod();        // here you can do whatever you want.         // Add some additional logic        // transform result value if there is some    }}注意:您必须实现相同的接口才能遵循Liskov 替换原则

万千封印

一个解决方案是创建一个扩展您想要更改的类并覆盖您想要更改的部分的类
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java