0

我有一个依赖工厂类,像命名工厂一种类,其返回静态对象

class DependencyFactory { 
    static Dependency dependency1 = getDependency1FromSomewhere(); 

    static Dependency dependency2 = getDependency2FromSomewhere(); 

    public static Dependency getDependency(int arg1) { 
     if (arg1 == 1) return dependency1; 
     return dependency2; 
    } 
} 

现在我的困惑是在类DependencyFactory的名称。我认为这不完全是一个工厂,而是一个根据参数返回预定义依赖关系的决策器类。那么,名称是否像DependencyFactory一样可以,或者它应该是别的吗?

谢谢。请评论任何其他信息。

+0

静态工厂方法如何访问实例变量?此代码不能编译。 – jaco0646

+0

@ jaco0646这不是重点,但我已纠正,让你感觉更好:) –

+0

我感觉更糟糕:静态字段不能自动装配。 :( – jaco0646

回答

0

GoF book

严格定义如下定义的界面,用于创建一个对象,但让子类决定哪一个类实例 。工厂方法让类将实例化推迟到子类。

一个不得不说:没有 - 你的类不是工厂,因为这种模式为您提供了一种方式,来实例化类。

也许你在寻找的是一个strategy pattern

从我的设计模式的经验往往是无法肯定的告诉这是去一个适当的方式,不知道你的系统的背景。