有设计问题,也许你可以帮助决定。
我的客户对象可以要求一组对象 class Report
。有一组定义的可用报告,根据客户的权限,不同的报告可以包含在返回的集合中。每个请求都会创建报告(每个客户都会在每个请求上获得全新的报告实例)。
我应该使用一种“工厂”来封装报告创建,如下所示:
public class ReportsFactory {
private UserPermissionsChecker permissionsChecker;
public Set<Report> createReports() {
Set<Report> reports = new HashSet<Report>();
if(permissionsChecker.hasAccessTo('report A')) {
reports.add(createReportA());
}
if(permissionsChecker.hasAccessTo('report B')) {
reports.add(createReportB());
}
if(permissionsChecker.hasAccessTo('report C')) {
reports.add(createReportC());
}
return reports;
}
private Report createReportA() {...}
private Report createReportB() {...}
private Report createReportC() {...}
}
这是所谓的简单工厂模式的正确用法吗?或者你有其他建议吗?
** 编辑 **
下面的一些评论说这不完全是工厂模式。如果不是,我怎么能这样称呼?