如何减少表示层和业务层(JPA,Netbeans)之间的耦合?



我正在从事Java数据库项目,我正在尽最大努力将我的DAL/BL层分离到表示层(Web/桌面应用程序)。

在"搜索"按钮后面的某个地方,我必须调用一个返回"OpArticle"对象列表的方法。以标准方式,应注入以下代码:

OpArticleJpaController articleCpontroller = new OpArticleJpaController(_emf);
listArticle = articleCpontroller.findOpArticleEntities();

其中"_emf"是一个实体管理器工厂实例,应该在应用程序启动中实例化。

我问的是一种更有效(更干净)的设计模式,它让我不必将"EntityManagerFactory (_emf)"的引用传递给表示层中的控制器类。

我正在考虑以下方法:

listArticle = DaoFactory.getArticleController().findOpArticleEntities();

其中"DaoFactory"管理控制器对象的创建,如下所示:

c1 = DaoFactory.getArticleController();
c2 = DaoFactory.getCustomerController();
etc...

它是否违反了任何最佳实践,因为每次开发新的控制器或任何服务提供商类并将其添加到 DAL/BL 层时,我都必须通过添加新的实例化方法来更新工厂。

此致敬意。

如果您这样做,尽管每次添加控制器时都需要修改工厂,但您可以以兼容的方式修改它,而不会破坏任何重要的 OO 原则。

但是,如果您使用像GUICE这样的依赖注入框架,并且只需将EMF保留为依赖项,您将受益匪浅。

最新更新