IOC模式:馅饼与披萨的优劣!(*^__^*)

  与朋友讨论策略模式和IOC的关系。有很多人说策略模式等于IOC模式,但个人认为策略模式是更高层次的设计模式,而IOC更接近于具体的解决方法。在策略模式中只是使用了IOC模式而已,但使用IOC模式的程序并不一定使用了策略模式。策略模式除了使用了IOC,还有继承的思想,因此,更准确地说,策略模式和IOC应该是有交集的,但并不等于。

  说到IOC模式,其基本思想就是使用接口解耦合。说白了,也就是在类中使用接口来代替具体的类。在创建类的对象实例时在对象的内部根本不知道接口所对应的对象是什么。而这些对象是在类的外部通过setter方法指定的(一般为setXxx方法,当然,也可以使用其他的方法)。这样做的好处是可以将类和类之间的耦合关系降到最低,除此之外,还可以更好地分工合作。例如,有A、B、C三个类和X、Y两个接口。在A中引用了X、Y两个接口,B和C分别实现了 X和 Y接口。那么A类和B、C类可以分开设计。这三个类是不会互相影响的,而指定B、C的工作都在A类的外部进行。

  从上面的IOC模式的基本思想我们也许会想到很多现实中的东东。例如,传统的方法是在A类中直接引用B、C类,这样做非常不利于维护和升级,如果A要引用其他的类(如D、E类),必须要修改A类的代码。在创建A类的对象实例时,内部的引用对象已经确定。由此我们可以联想到中国的馅饼,在做馅饼时,会将馅用面包起来,当然,这样做出来的馅饼也许很美味,但从工程学的角度来看,这样做既不利于更换其中的馅,也不利于分工协作。一般都是馅饼包完了,馅已经进到饼里了,很难批量生产大量的饼,再批量加馅。

  不过老外的比萨饼就好得多,由于馅是在饼的外面,加馅很方便。我们可以将饼本身想象成A类,而不同的馅可以想象成B或C类。在IOC模式中,B和C类是在 A类的外部指定的,在这个过程中并不需要修改A类。而比萨饼也有类似的地方。当饼做完后,并不需要破坏饼,而直接在饼上面加上不同的馅即可,如果要换一种馅,只要将饼上面的馅去掉,再换一种即可。从工程学的角度来看,这是非常酷的一件事。当然,这样也更有利于分工协作,饼可以批量生成,在生成出饼时,并不需要知道饼上到底要放什么馅(使用什么类),而只要知道饼上要放馅即可(接口)。在做完饼后,放什么馅完全由另外一道工序决定了。

  有人说老外做比萨饼是因为不知道中国馅饼中的馅是如何放进去的,没办法才将馅放到外面的。个人认为,这纯属瞎说,老外的智商要是这么低,就不会发明出计算机了,也不会登月了。实际上,老外这是利用了工程学原理和IOC模式,使比萨饼更容易生产,而且外形美观,增加食欲等等。怪不得老外计算机这么厉害,就连做吃的都要用到设计模式,哈哈!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值