拥有一个ObjectFactory接口和实现它的类是不错的设计

时间:2014-03-26 09:55:40

标签: java design-patterns

我想知道下面的课程设计。 我有一个名为ObjectFactory的接口和一个实现它的类,它被称为ObjectFactoryImpl。 ObjectFactoryImpl类具有从包创建对象的所有方法,并且从该包创建新对象的实例,需要ObjectFactoryImpl实例。 ObjectFactoryImpl类也在内部使用属于它所在的包的所有类。这是一个好的或坏的设计?

2 个答案:

答案 0 :(得分:2)

通常,隐藏界面背后的实现细节是一种很好的做法,因此您处于"右侧"办法。

但是要保持一致。尽量避免直接使用您的实现。您应该始终牢记,您可能希望在不更改代码的情况下将其替换为其他代码(超出工厂范围)。

另一个评论是关于以Impl结尾的名称。虽然我个人在生活中多次使用这些名字,但他们说后缀Impl没有意义。嗯,这是实施,那又怎样?尝试为您的课程提供可自行解释的名称。例如SimpleObjectFactoryConfigurableObjectFactoryXmlObjectFactory等。

答案 1 :(得分:1)

使用界面是一种很好的做法,以便将来扩展您的代码。如果您已创建ObjectFactory,我会使用它,而不是ObjectFactoryImpl。也许将来你会有另一种你更喜欢使用的实现。

我有时会做的另一个选择是定义一个具体的类ObjectFactory并使用它。如果我需要为工厂添加另一个实现,我将ObjectFactory的名称更改为ObjectFactoryImpl并添加另一个实现。这样您就不需要进行大量的代码更改,因为使用此类/接口的大多数地方保持不变。