工厂创建的对象可以有构造函数吗?

时间:2013-09-19 09:17:07

标签: java oop

这个问题来自我的Selenium question。在那个问题中,我正在使用一个工厂来创建对象,我想,也许是错误的,如果它被工厂实例化,我的类将没有构造函数。但是,在答案的评论中,MrTi建议在构造函数中指定一些东西。

因此 - 工厂实例化对象可以有构造函数吗?

2 个答案:

答案 0 :(得分:4)

是。您通常只使构造函数对工厂可见。在Java中,这是通过将工厂放在与它将构建的类相同的包中并将构造函数包保持为私有(无访问修饰符)来完成的。

答案 1 :(得分:4)

是的,他们可以而且他们应该。但是当你使用工厂时,你实际上想要控制对象的创建,因此必须通过直接访问构造函数来防止其他代码创建对象。为此,你可以将工厂放在与你想要的类相同的包中。从中创建对象并将构造函数的可见性设置为package protected。