我必须为大学课程实现一个多生产者/多消费者示例应用程序,并且很难找到以下问题的解决方案,这并没有让我觉得我做错了什么;)
我必须实现 aProducer
产生给定类型的Component
( CPUComponent
, MainboardComponent
. 公共Component
类的所有子类)。a 的每个实例Producer
只会产生给定数量的一种类型的组件(例如只有主板),然后退出。
的Component
s为都或多或少不变的对象(仅final
字段)和所有逻辑都在共同的基类实现Component
(下面简化的)
public abstract class Component implements Serializable
{
private final long id;
public Component(int id) { ... }
public long getId()
{
return id;
}
}
Run Code Online (Sandbox Code Playgroud)
的子类Component
只是原始的,比如
public class CPUComponent extends Component
{
public CPUComponent(long id) { ... }
}
Run Code Online (Sandbox Code Playgroud)
由于语言是 Java,我无法使用泛型轻松解决此对象生成问题(就像在 C# 中一样,因为我无法在 Java 中实例化泛型类型参数的新对象)。所以我开始实现一个工厂
public interface ComponentFactory {
Component createComponent(Producer …
Run Code Online (Sandbox Code Playgroud)