java hide实现两层之间的类细节

时间:2013-03-19 09:48:27

标签: java interface implementation decouple

我正在构建一个具有业务逻辑层的应用程序,该层需要访问所有与DB相关的DAO层。我的要求是DAOImpl类可以不断变化,所以我正在寻找能够在业务逻辑类中获得DAOImpl类句柄的方法,而无需知道实际的DAOImpl类。有什么方法可以用Java实现这个目标吗?

3 个答案:

答案 0 :(得分: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);

OR

    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;
    }
}

答案 1 :(得分:1)

你的商业逻辑应该只能处理DAO interfaces,这将隐藏真正的实体。

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

答案 2 :(得分:0)

听起来你想要使用interface,这是java将实现与所需行为分离的基本方法。