IoC的概念和作用

目录

  1. 程序的耦合和解耦
  2. 使用spring的ioc解决程序耦合

一、什么是程序的耦合和解耦

耦合:描述程序间的依赖关系,类、方法间的依赖关系。划分模块的依据就是高内聚低耦合
解耦:降低程序间的依赖关系,只能降低,不能完全消失
在实际开发中,我们往往减少编译期的依赖,尽量在运行期依赖。

实例说明程序间的耦合:

  • 项目架构:
    在这里插入图片描述

  • 代码:

/**
 * 表现层实现类
 */
public class Client {
   
    public static void main(String[] args) {
   

        IAccountService as=new AccountServiceImpl();//表现层调用业务层,类之间相互依赖,具有耦合性
        as.saveAccount();
    }
}
/**
 * 业务层接口
 */
public interface IAccountService {
   

    public void saveAccount();
}

/**
 * 业务层实现类
 */
public class AccountServiceImpl implements IAccountService {
   

    IAccountDao accountDao =new AccountDaoImpl();//业务层调用持久层,类之间相互依赖,具有耦合性
    @Override
    public void saveAccount() {
   
        accountDao.saveAccount();
//        System.out.println("业务层保存账户方法");
    }
}
/**
 * 持久层接口
 */
public interface IAccountDao {
   
    void saveAccount();
}


/**
 * 持久层实现类
 */
public class AccountDaoImpl implements IAccountDao {
   
    @Override
    public void saveAccount() {
   
        System.out.println("持久层保存账户方法");
    }
}

  • 运行结果
    在这里插入图片描述
  • 其中表现层调用业务层的类创建对象,业务层调用持久层的类创建对象,类之间具有依赖关系,若将其中一个类删掉,则程序会运行报错,所以我们项目代码模块划分时要求低耦合
    在这里插入图片描述在这里插入图片描述

二、解耦的思路

方法一:工厂模式解耦

在实际开发中,我们往往将三层的对象都使用配置文件配置起来,当启动服务器应用时,用一个类中的方法来读取配置文件,创建对象并存起来,在接下来使用时,之间拿过来用就好。这个读取配置文件,创建对象并存起来,获取对象的方法就是工厂。

 第一个:需要一个配置文件来配置我们的service和dao
       配置的内容:唯一标识=全限定类名(key=value)
 第二个:通过读取配置文件中配置的内容,反射创建对象

 我们的配置文件可以是XML也可以是properties

实例:

  • 项目架构
    在这里插入图片描述
  • 代码
    配置文件:bean.properties
    在这里插入图片描述
/**
 * 业务层接口
 */
public interface IAccountService {
   

    public void saveAccount();
}
/**
 * 业务层实现类
 */
public class AccountServiceImpl implements IAccountService {
   

//    IAccountDao accountDao =new AccountDaoImpl();//业务层调用持久层,类之间相互依赖,具有耦合性


    IAccountDao accountDao= (IAccountDao) BeanFactory.getBeans("accountDao");
    @Override
    public void saveAccount() {
   
        System.out.println("业务层保存账户方法");
        accountDao.saveAccount
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值