MVC模式中,DAO层里往往有个范型抽象类UserDao.java和一个具体实现它的一个子类UserDaoImpl.java,为什

2024-12-14 07:40:36
推荐回答(3个)
回答1:

就 private UserDAO = new UserDAOImpl()而言,因为UserDAO是个接口,它不能直接实例化,而是UserDAOImpl是个类,它可以实例化,至于为什么用UserDAOImpl实例化UserDAO?因为UserDAOImpl实现了这个接口,父类的对象可以引用子类的对象即对象上转。

可能你觉得这样很麻烦吗,直接用实现类不就行了吗,即不用接口,实例化的时候也方便,随着你的深入学习,到了一定层次后,你就会有很深的关于面向接口编程的体会。

回答2:

你的意思是不是为什么不直接来个UserDAOImpl,而非要加个UserDAO 接口?
这样好处是可以屏蔽实现层,比如你现在用hibernate实现dao,后来改用ibatis,那么只要替换impl的类就可以,而不用改动其他。
另外一个是,dao接口属于M层,它不应该知道如何去实现数据的持久

以上仅是我个人看法,不对的地方欢迎指教。

回答3:

一般有个UserDao接口,一个实现类。就是面向接口编程。