Spring框架:传统开发存在的问题

一,原始开发过程

没有接口的编程

1 public class UserDao{
2     public void saveUser(){
3         //JDBC 插入用户数据的代码或Hibernate插入用户数据的代码
4     }
5 }

 

1  public class UserService{
2      public void saveUser(){
3          UserDao userDao = new UserDao();
4          userDao.saveUser();
5      }
6  }

分析:没有多态,代码维护起来工作量巨大

 

 

二,传统的Java EE开发过程

以业务层(service)和持久层(dao)为例

业务层调用持久层,持久层调用数据库,持久层用的是JDBC

DAO层

1 /**
2 *用户管理Dao接口
3 */
4 public interface UserDao {
5     public void save();
6 }
1 /**
2 *用户管理Dao接口实现类, 使用JDBC
3 */
4 public class UserDaoImpl implements UserDao {
5     @Override
6     public void save() {
7         System.out.printl("UserDaoImpl执行了...");
8     }
9 }

Service层

1 /**
2 *用户管理Service接口
3 */
4 public interface UserService {
5     public void save();
6 }
1 /**
2 *业务层调用Dao
3 */
4 public class UserServiceImpl{
5     public void saveUser(){
6         UserDao userDao = new UserDaoImpl();
7     }
8 }

 

现在的需求是想把持久层改用Hibernate框架则需要变动的代码有

1 /**
2 *用户管理Dao接口实现类,使用Hibernate框架
3 */
4 public class UserDaoHibernateImpl implements UserDao {
5     @Override
6     public void save() {
7         System.out.printl("UserDaoHibernateImpl执行了...");
8     }
9 }
1 /**
2 *业务层调用Dao
3 */
4 public class UserServiceImpl{
5     public void saveUser(){
6         UserDao userDao = new UserDaoHibernateImpl();
7     }
8 }

那么问题又来了,若果某天需求又发生变化,客户想使用现在流行的Mybatis框架代替Hibernate,这样又得改代码(这里的涉及的业务逻辑比较少,当涉及的业务逻辑很多时,增删改查各种条件都有时 ,那时改起代码的工作量将会很大,也就是所说的维护难)

总结:

上述UserDaoImpl与UserDao之间存在耦合关系,如果UserDao的实现类需要用Hibernate进行数据调用则需要创建新的类USerDaoHibernateImpl,同时 UserDao userDao = new USerDaoHibernateImpl();如果又不想用hibernate,改用mybatis,则又需要改底层实现,很麻烦。

posted @ 2019-07-30 10:37  Noperx  阅读(298)  评论(0编辑  收藏  举报