有设计问题,也许你可以帮助决定。
我的客户对象可以要求一组对象 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() {...}
}
这是所谓的简单工厂模式的正确用法吗?或者你有其他建议吗?
** 编辑 **
下面的一些评论说这不完全是工厂模式。如果不是,我怎么能这样称呼?