IOC在墨者革离中的理解

IOC在墨者革离中的理解

实现墨者革离场景

  1. 首先是实现MoAttack
public class MoAttack{
	public void cityGateAsk(){
	//让演员进场
		LiuDeHua liuDeHua = new LiuDeHua();
        liuDeHua.responseAsk("墨者革离");
	}
}
  1. 接口GeLi电影中的角色,需要演员去扮演他
public interface Geli {
    void responseAsk(String ask);
}
  1. LiuDeHua类,指的是演员刘德华去扮演革离
public class LiuDeHua implements Geli {
    public void responseAsk(String ask) {
        System.out.println(ask);
    }
}
  1. Play类实现main函数创建MoAttack
public class Play{
	public static void main(String[] args){
		MoAttack m=new MoAttack();
		m.citeGateAsk();
	}
}

简单执行就是输出“墨者革离”

思考问题

我们看出源代码中是LiuDeHua类实现了GeLi接口并在MoAttack类中进行实现场景。

但是如果是梁朝伟扮演革离的情况呢?

我们是不是要先实现LiangChaoWei类并继承GeLi,这一步是必须实现的。

但是在MoAttack类中我们还需要修改原先的代码

public class MoAttack{
	public void cityGateAsk(){
	//让演员梁朝伟进场
		LiangChaoWei  lcw= new LiangChaoWei();
        lcw.responseAsk("墨者革离");
	}
}

这时候问题来了,这也是这个问题用IOC思想去解决的关键:

假如古天乐成龙等等也要演革离怎么办?
当然都是需要实现演员的创建的,
但是对于在MoAttack(其实就是业务层) 类中我们都需要去进行修改创建新的演员类并且让他们实现场景。

这样是非常麻烦的。

IOC

这个时候我们引入了IOC思想,大致思想为: 所谓控制反转就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的。这样控制权就由应用转移到了外部容器,控制权的转移就是所谓反转。

我们就说在墨者革离场景中来说IOC

对于此时业务层 MoAttack类拥有控制权(对应上面概念),我们需要一个外部容器 来得到控制权,使得创建对象的过程不需要业务层 参与。那么我们就以IOC思想进行下面的实现!

用IOC属性注入的方法解决

在业务层MoAttack类

public class MoAttack {
    private Geli geli;
    public void citeGateAsk(){
       geli.responseAsk("墨者革离");
    }
//注入革离的具体扮演者
    public void setGeli(Geli geli) {
        this.geli = geli;
    }
}

这时我们引入外部容器就是Director

public class Director {
    public void direct(){
		
       MoAttack moAttack = new MoAttack();
       //指定角色扮演者
        moAttack.setGeli(new LiuDeHua());
        moAttack.citeGateAsk();
    }
}

这时我们可以看到解决了演员的问题,对于控制权这时已经属于了Director类,我们想要换演员不再需要去MoAttack中进行修改创建实现new方法,只需要在Director中的Set注入修改具体演员类就行了!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值