我正在创建一个应该包装一些对象创建的工厂方法。问题:您希望在构造函数中提供所需的数据,还是作为方法本身的参数?
class PersonFactory {
//constructor only neccessary of no param in method
public PersonFactory(PersonDTO dto) {
this.dto = dto;
}
public Person createPerson(PersonDTO dto) {
//create the complex person
return person;
}
//more methods to come
}
你会选择什么?为什么?
new PersonFactory(dto).createPerson();
new PersonFactory().createPerson(dto);
答案 0 :(得分:2)
这两个选项都有效。
这取决于您是否想要到达已经设置了dto
属性的工厂周围,或者只有在您使用工厂时才知道该属性。
当使用工厂的类不应该依赖PersonDTO
(无论是什么)时,将它作为私有属性附加到工厂是有意义的。
但是当PersonDTO是由工厂用户创建的对象时,您可以将其提供给create-method。
答案 1 :(得分:0)
我会选择新的PersonFactory()。createPerson(dto);因为它比较方便。如果要创建更多对象,则不需要创建工厂类的新实例。
答案 2 :(得分:0)
我会去
createPerson(dto)
对我来说,这更容易测试。
同样在这种情况下,您实际上并不需要PersonFactory的实例 - 您可以简单地将该方法设为静态。
答案 3 :(得分:0)
我用于工厂的设计规则是:
这意味着,我会采用new PersonFactory().createPerson(dto)
方法。
即使这两种方式在本例中都有效,但对于您创建的所有工厂,更容易遵循一种标准方法。这样,您的代码以后就会更容易理解。