从设计的角度来看,有一个从弹簧上下文返回单例的全局对象有什么不对吗?
我刚开始在一个新的地方工作,DAO都是通过一个名为DAOUtils的全局对象访问的,其中每个DAO都从spring上下文中获取单例DAO bean。因此,如果您想保存采购订单,例如,您可以说
DAOUtils.getPurchaseOrderDao()savePurchaseOrder(PO);
或类似的东西。
我已经习惯按需要将DAO注入到需要它们的每个类中,所以这让我感到震惊。从设计的角度来看,它有什么问题,如果是这样,你能解释为什么这是一个坏主意吗?
我可以看到它使单元测试变得困难,因为没有办法阻止代码调用实际的DAOUtils类..?我想这可以被描述为由紧耦合引起的问题?
答案 0 :(得分:4)
这是糟糕的设计模式,因为你无法用其他东西代替DAOUtils,例如用于测试目的。
Spring使用依赖注入,这是检索DAO实例的最佳方法。