我有以下课程:
public class Report{
//contains some data fields
}
和
public class ReportFactory{
//The fields below are in fact restrictions
private List<Integer> idList;
private OrderProperty property;
private Integer amount;
//ad so forth
//GET, SET
public Report getReport(){
Report report = new Report;
//Getting report depending on which of those fields were setted
return report;
}
}
我的问题是,如果说ReportFactory
实际上是对象工厂,那是否正确。可否它误导了试图理解代码的开发人员?
答案 0 :(得分:2)
由于您使用方法生成Report
类的实例,因此根据定义它是工厂模式,是的。
无论如何,通常在工厂模式中,描述要生成的实例的限制或参数直接使用方法参数传递,而不是使用字段。
答案 1 :(得分:1)
是的,可以公平地说ReportFactory.getReport()
是用于创建Report
类实例的工厂方法,开发人员应该理解相同的。但是,您可以阅读更多内容以获得更好的工厂模式实现。
答案 2 :(得分:0)
这是正确的。
实际上,对象工厂到底意味着它应该根据类型初始化对象并返回相应的对象引用。
例如,如果Shape是一个对象工厂,那么Shape类中的get()方法应初始化Rectangle,Square,Triangle等形状......并根据用户需求返回相应的实例。
如果ReportFactory类根据getReport()方法中的user参数初始化并返回不同类型的报表对象,则表示您的ReportFactory类是对象工厂。