面向接口编程到底有什么好处

转自CSDN:http://topic.csdn.net/u/20080123/15/ec6c6637-c8b9-4d7d-82f7-caefbd3a1d2a.html

 

比如说,你要注册一个用户,前面是业务逻辑,要调用数据访问层的save(user)方法。先写一个数据访问对象的接口

public interface IDAO{
    void save(User user) throws UserNameExistException;
}


 

jdbc的实现是 

 

public class JDBCDAO implements IDAO{
    public void save(User user) throws UserNameExistException{
        .....
        String sql = "insert into t_user values(?,?,?,?)";
        ....
        PreparedStatement pstm = conn.prepareStatement(sql);
        pstm.setString(1,user.getName());
        ....
        pstm.executeUpdate();
        ......
    }
}

 

 

Hibernate的实现是

 

public class HibernateDAO implements IDAO{
    public void save(User user) throws UserNameExistException{
        ......
        session.save(user);
        session.getTransaction().commit();
        ....
    }
}

 

你的业务层UserService只要这么写

public class UserService{
    public void register(String userName,String password,int age,....等等参数){
        //假设现在用的是JDBC的实现
        IDAO dao = new JDBCDAO();//当你需要替换实现的时候,只要把这个JDBCDAO换成HibernateDAO就可以了,其它代码不需要改。
        User user = new User();
        user.setName(userName);
        ......
        dao.save(user);
    }
}

 

你可能感兴趣的:(JAVA基础)