-1

我正在构建一个具有业务逻辑层的应用程序,该业务逻辑层需要访问所有与数据库相关的东西的 DAO 层。我的要求是 DAOImpl 类可以不断变化,因此我正在寻找在我的业务逻辑类中获取 DAOImpl 类句柄的方法,而无需知道实际的 DAOImpl 类。有什么办法可以在 Java 中实现这一点?

4

3 回答 3

3

DAOImpl类应该实现一个接口DAOLayer(比如说)。您的 businessLogic 类应该由一个DAOLayer对象组成。

class BusinessLogic
{
    /// ...

    DAOLayer daoLayer;

    public BusinessLogic(DAOLayer daoLayer)
    {
        this.daoLayer = daoLayer;
    }

    /// ...
}

class DAOImpl implements DAOLayer
{
    /// ...
}

DAOLayer您应该在创建BusinessLogic类对象时传递实际的实现。

类似于以下:

DAOLayer aDaoLayer = new DAOImpl();
BusinessLogic bl = new BusinessLogic(aDaoLayer);

或者

    public BusinessLogic()
    {
        this.daoLayer = DAOFactory.create(true);
    }

class DAOFactory
{
    public static DAOLayer create(bool isDB)
    {
        DAOLayer aDao;

        if(isDB)
        {
            aDao = // create for DB
        }
        else
        {
            aDao = // create for file
        }

        return aDao;
    }
}
于 2013-03-19T09:53:09.627 回答
1

您的业​​务逻辑应该只处理 DAO接口,这将隐藏实际的实现。

为了能够快速更改实现类,请查看 IoC 容器,例如Spring

于 2013-03-19T09:52:55.233 回答
0

听起来你想使用一个接口,它是java将实现与所需行为解耦的基本方法。

于 2013-03-19T09:51:36.407 回答