相关疑难解决方法(0)

你能用反射找到包中的所有类吗?

是否可以找到给定包中的所有类或接口?(快速查看例如Package,它似乎没有.)

java reflection packages

504
推荐指数
13
解决办法
36万
查看次数

在java中扩充工厂模式

我正在尝试使用工厂模式来创建一个QuestionTypeFactory,其中实例化的类将像MultipleChoice,TrueFalseQuestion等.

工厂代码看起来像这样

class QuestionFactory {
    public enum QuestionType {
        TrueFalse,
        MultipleChoice,
        Essay
    }

public static Question createQuestion(QuestionType quesType) {
    switch (quesType) {
        case TrueFalse:
            return new TrueFalseQuestion();
        case MultipleChoice:
            return new MultipleChoiceQuestion();
        case Essay:
            return new EssayQuestion();
    }
    throw new IllegalArgumentException("Not recognized.");
}
}
Run Code Online (Sandbox Code Playgroud)

这个现在可行了.如果我想添加另一个问题类型,我将需要修改工厂类,我不想这样做.

如何设置它以便每个问题类在Factory中注册自己,这样当我添加新的问题类型时,我不必更改工厂的代码?我对java有点新,我不知道该怎么做.

编辑

附加信息

所有问题类都实现了IQuestion接口.我正在寻找一种方法来实现像这样的方法

public static void registerType(QuestionType quesType, Class<IQuestion> ques)
Run Code Online (Sandbox Code Playgroud)

这样我就可以从我的类中的静态块调用这个方法,这样当我添加一个新的问题类型时,我就不必在Question Factory中更改或添加任何代码了.我知道我必须更改当前的实现以使其通用.我不确定我上面写的方法在语法上是否正确,但它在概念中显示了我想要的东西.

java design-patterns factory-pattern

4
推荐指数
1
解决办法
1757
查看次数