如何避免多态工厂模式中的大量样板

时间:2012-11-09 17:29:49

标签: java design-patterns

我有一个抽象的Command课程。从某个类Command创建的每个Fetcher类都需要赋予某些属性。通常这看起来像工厂模式 - Fetcher创建CommandFactory,在创建Command时会为其做好准备。然而,大约有十几个派生类,我没有看到如何在没有为每个具体类具有不同的具体工厂的情况下执行此操作,或者在每次新的createConcrete1Command时必须扩展的不同方法Command。 1}}类已创建。对此有什么策略吗?

2 个答案:

答案 0 :(得分:1)

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

构造

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

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

答案 1 :(得分:0)

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

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

 public class AbstractFoo {

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

 }

并在createCommand()上调用Fetcher extends AbstractFoo会创建FetcherCommand的实例。

这就是你要找的东西吗?

相关问题