我有一个业务类,它调用实现DAO接口的DAOimpl类,现在如何减少耦合。 DAO用于减少与持久性逻辑的耦合。我们应该做些什么来减少DAO和业务逻辑之间的耦合。
答案 0 :(得分:4)
您的公司类希望与其他业务类进行交互。 DAO提供的接口应该只需要依赖于业务类。
例如
public class Apple extends Fruit {}
和
public interface AppleDao extends Dao { // can be refactored even more
public void add(Apple apple) throws FruityException;
}
和实施
public class AppleDaoHibernateImpl implements AppleDao {
@Inject
private Session session; // Hibernate session or JPA EntityManager, etc.
public void add(Apple apple) throws FruitException {
// do something with session, entityManager, etc.
}
}
当您的业务类使用AppleDao
时,他们看不到需要导入的任何SQL,I / O等类(依赖于)。相反,他们只看到更多业务(模型)类,如Apple
和FruityException
。
通过这种方式,您可以更改底层实现,例如使用Web服务而不是直接使用数据库,而无需更改界面。