耦合度简单介绍和有关Spring的解耦问题

如果没有使用Spring框架的时候,再项目中写Servlet的时候各组件之间是存在依赖关系的,看下面代码:

// 处理用户登录请求的Servlet组件类
public class LoginServlet {
    private UserDao userDao = new UserDao();
    public void doPost() {
        userDao.login();
    }
}
// 处理用户数据增删改查的组件
public class UserDao {
    public void login() {
        // 通过JDBC技术实现数据查询,判断用户名与密码是否正确
    }
}

也就是说,LoginServlet的完成是依赖于UserDao的,这样的话就会导致耦合度高的问题!在UserDao中通过基本原始的JDBC来实现数据访问的,如果改为MyBatis框架技术实现的话就会创UserMybatisDao类,取代UserDao,这样的话就要大量的替换代码:

private UserDao  userDao= new UserDao();

全部替换为:

private UserMybatisDao userDao = new UserMybatisDao();

这种牵一发动全身问题也就是高耦合的表现,我们需要降低耦合度,解耦!!!

将处理用户数据操作的相关声明在接口中:

public interface Dao{
void login();
}

要操作数据的类来实现这个接口:

public class UserDao implements Dao{
public void login(){
//JDBC处理的有关代码
}
}
public class UserMybatisDao implements Dao {
    public void login() {
        // 通过MyBatis框架技术实现处理用户登录
    }
}

后续在各个Servlet组键中,就可以声明为接口类型:

private Dao dao = new UserMybatisDao();

通过以上的操作,就
实现解耦啦!
还有就是,我们可以使用工厂模式来生产类:

public class DaoFactory{
public static  Dao newInstance(){
return new UserMybatisDao();
  }
}

有工厂模式以后,Servlet的持久层数据创建对象的代码就可以写成:

UserDao user  = DaoFactory.newInstance();

这样以后,不管是用UserDao还是UserMybatisDao,在替换时只要替换掉UserDaoFactory里面的return的对象就行了!通过定义接口喝创建工程类来解耦,实际开发中不会为每一个组键都创建工厂类的,这时就会使用Spring框架,它相当于一个庞大的工厂,将某些类的对象交给Spring来管理,在后续的使用过程中,就不要自己创建对象了,而是获取对象就好!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值