gpt4 book ai didi

java - 寻找某种模式

转载 作者:行者123 更新时间:2023-12-02 08:16:03 24 4
gpt4 key购买 nike

我有一个库项目,其中包含一个抽象类,比如说ClassA。在使用该库项目的项目中,我有扩展 ClassAClassB

现在这是我的问题。在库项目中,我想使用已实现的 ClassB 的实例,但我不知道如何检索该实例。有什么模式或其他想法吗?

Here's情况的简单图表。

编辑

我问的原因是我正在创建多个应用程序,这些应用程序仅在 ClassB 中具有不同的方法。因此,我正在创建一个所有这些应用程序都可以使用的库,只需扩展ClassA。这些应用程序是使用该库的单独项目。

最佳答案

您正在寻找类似 Abstract Factory 的内容图案。应用程序代码(调用库的代码)在某些时候需要传入一个 Factory 类,库将使用该类来创建 ClassA 对象的实例。在您的例子中,Factory 类将生成 ClassB 的实例。

根据类的设计和功能,作为此重构的一部分,ClassA 可能应该重新设计为接口(interface),或者至少作为抽象类。

编辑:这是一个未经测试的伪示例:

此代码将位于库中

class INeedAFactory {
public Interface MyFactory {
public ClassA makeClassAInstance();
}

private MyFactory m_factory;
public registerFactory(MyFactory factory) {
m_factory = factory;
}

private ClassA makeClassAInstance() {
// m_factory had better not be null!
return m_factory.makeClassAInstance();
}

private void ClassAConsumer() {
ClassA classA = makeClassAInstance();
// ... etc. ...
}
}

此代码将位于应用程序中:

class LibraryPatron {
class MakeClassB implements INeedAFactory.MyFactory {
public ClassA makeClassAInstance() {
return new ClassB();
}
}
public LibraryPatron() {
INeedAFactory libraryObject = new INeedAFactory();
libraryObject.registerFactory(new MakeClassB());
// ... etc...
}
}

关于java - 寻找某种模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6417184/

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