我正在研究Java数据库项目,我正在尽力将我的DAL / BL层分离到表示层(Web /桌面应用程序)。
某处,在“搜索”按钮后面,我必须调用一个返回“OpArticle”对象列表的方法。以标准方式,应该注入以下代码:
OpArticleJpaController articleCpontroller = new OpArticleJpaController(_emf);
listArticle = articleCpontroller.findOpArticleEntities();
其中“_emf”是应该在应用程序启动时实例化的EntityManagerFactory实例。
我问的是一个更高效(更干净)的设计模式,让我没有义务将“EntityManagerFactory(_emf)”的引用传递给表示层中的控制器类。
我正在考虑以下方法:
listArticle = DaoFactory.getArticleController().findOpArticleEntities();
其中“DaoFactory”管理控制器对象的创建,如下所示:
c1 = DaoFactory.getArticleController();
c2 = DaoFactory.getCustomerController();
etc...
每次开发新控制器或任何服务提供者类并将其添加到DAL / BL层时,是否违反任何最佳实践,因为我知道必须通过添加新的实例化方法来更新工厂。
最好的问候。
答案 0 :(得分:0)
如果你这样做,虽然你需要在每次添加控制器时修改工厂,你可以以兼容的方式修改它,不会破坏任何重要的OO原则。
但是如果使用像GUICE这样的依赖注入框架并且只是将EMF作为依赖项,那么您将受益匪浅。