gpt4 book ai didi

Java库架构

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:29:31 24 4
gpt4 key购买 nike

1) Somelib 作为jar 添加到SomeProject

2) 在 SomeProject 中有 somePackage.SomeClass 实现了 SomeLib.SomeInterface

3) SomeLib 必须能够创建somePackage.SomeClass 实例而无需每次构建SomeLib

不使用反射怎么可能呢?不可能在 SomeLib 中编写类似 import somePackage.Someclass 的内容。

我正在使用 Netbeans。

PS 我是 Java 的新手,我试图尽可能清楚。

最佳答案

您可以添加一个硬编码的依赖项,但如果您打算重新使用您的库(即使您不这样做),您应该不惜一切代价避免这样做

改为使用此模式:

  1. 创建一个工厂,用于在您的库中创建SomeInterface 实现。 (有关详细信息,请参阅 Factory method pattern)

  2. SomeProject 中,您必须向该工厂注册您的 SomeClass。为此,您可以将静态初始值设定项与 Class.forName 结合使用。

    public class SomeClass {
    static {
    SomeFactory.registerSomeImplementation(SomeClass.class)
    }
    }

    Class.forName("somePackage.SomeClass") // Alternative 1
    SomeClass.class.getName(); // Alternative 2

    两种选择都加载类并运行静态初始化程序,但第二种提供了一些更好的重构机会。不要与 Class.forName 混淆:其他答案之一建议使用它在 library 中创建 SomeClass 实例。但是在这里,您在项目中使用它来加载类,从而运行静态初始化程序。

  3. SomeLib 然后可以使用工厂为 SomeInterface 创建一个实例。

    SomeInterface si = SomeFactory.createSomeObject();

关于Java库架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1491146/

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