我有一个抽象Command
类。Command
从某个类创建的每个类都Fetcher
需要被赋予某些属性。通常这看起来像一个工厂模式 -Fetcher
创建一个CommandFactory
将Command
在创建它时准备的。但是,大约有十几个派生类,如果每个具体类没有不同的具体工厂,或者每次创建新类createConcrete1Command
时都必须扩展不同的方法,我不知道如何做到这一点。Command
有什么策略吗?
问问题
269 次
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 AbstractFoo
FetcherCommand
那是你要找的吗?
于 2012-11-15T01:42:56.120 回答