3

我有一个抽象Command类。Command从某个类创建的每个类都Fetcher需要被赋予某些属性。通常这看起来像一个工厂模式 -Fetcher创建一个CommandFactoryCommand在创建它时准备的。但是,大约有十几个派生类,如果每个具体类没有不同的具体工厂,或者每次创建新类createConcrete1Command时都必须扩展不同的方法,我不知道如何做到这一点。Command有什么策略吗?

4

2 回答 2

1

我发现这种情况的解决方案如下:

构造函数:

public BaseClass(Parameters p); // can be expanded and endowed as necessary; essentially anything a constructor can do can happen here.

当然,所有派生类都将 aParameters作为参数,但是Parameters可以根据需要进行扩展,而无需触及任何派生类的构造函数。

于 2012-12-07T19:05:59.107 回答
0

您可以尝试使用Class.forName(String)andClass.newInstance以编程方式创建新实例。虽然一般来说,我发现由于缺少元类,工厂模式总是适用于 Java 中的样板代码。

所以类似于(模块异常处理并假设每个 Foo 类都有一个 FooCommand 类)

 public class AbstractFoo {

     public ICommand createCommand() {
         return Class.forName(this.getClass()+"Command").newInstance();
     }

 }

并调用创建createCommand().Fetcher extends AbstractFooFetcherCommand

那是你要找的吗?

于 2012-11-15T01:42:56.120 回答