微信开发中 ACCESS TOKEN 过期失效的解决方案详解
594
2022-10-15
Spring(3):IOC--“控制反转”的剖析
普通的业务实现方法,如下伪代码:
/* * 接口,定义了持久化方法 * */public interface UserDao{ /** * 保存方法 * */ public void save();}/** * DAO实现类,实现具体的操作 * */public class UserDaoImpl implements UserDao{ public void save(){ //说明作用 System.out.println("Have saven user data."); }}/** * 用户业务类,实现对User功能的业务管理 * */public class UserServiceImpl implements UserService{ //实例化依赖的UserDao对象 private UserDao dao = new UserDaoIpml(); public void addNewUser(User user){ //调用UserDao的方法 dao.save(); }}
上面代码有哪些问题呢?
(1)UserServiceImpl 和 UserDaoImpl 存在依赖关系,彼此高度耦合。(假如需求变化了,要改UserDaoImpl ,那UserServiceImpl 也要做修改);
(2)难测试,可扩展性和维护性很低。
利用“控制反转”的思想解决吧!
/** * 增加了用户DAO工厂 * */public class UserDaoFactory{ //负责创建用户DAO实例 public static UserDao getInstance(){ //省略具体步骤 } }/** * 用户业务类,实现对User功能的业务管理 * */public class UserServiceImpl implements UserService{ //通过工厂获取DAO对象 private UserDao dao = UserDaoFactory.getInstance(); public void addNewUser(User user){ //调用save方法 dao.save(); }}
就是说,UserServiceImpl 不再依赖自身代码去获得所依赖的具体DAO对象,而是把这个工作交给了“第三者”---UserDaoFactory,从而避免了和具体实现类
DAO的UserDaoImpl耦合。
因此,在获取依赖对象的这件事上,“控制权”发生了“反转”---由UserDaoImpl 转到了 UserDaoFactory 。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~