今天早上准备去一个阿姨那里买面包。可能是因为她的规模不大,因此管理不太规范化,因此去买面包时,没有人排队,即使都是大学生,似乎也没这个意识。。。
但让我感到震惊的是,虽然没有排队,但阿姨似乎可以保证我们买面包的公平性。方法是去买面包的人,谁先叫买什么,阿姨就会先卖给谁。不管你后来来买的人叫得都么宏亮,
阿姨都会先卖给先叫的人。阿姨把每个人的顺序都记住了,然后按这个顺序给我们卖面包。
对于这种方式,我个人是不赞同的。首先是如果人多了,阿姨可能就会很麻烦。其次,这种方式容易导致客户不满的情绪。因为“队列”在阿姨的脑袋里,客户看不到,对于新来的客户,
可能会有点反感,熟客可能就会理解。所以还是希望阿姨能换种方式(其实作为大学生的我们,为什么不自觉排队呢)。
阿姨买面包的方式让我想起了IoC。以前学习Spring的时候,对这个概念特别不理解。有时甚至发现,学习Struts2和Hibernate的时候,都能大概知道他们做什么,而对于Spring,却不知道
可以做什么,后来学到设计模式和软件工程,才对Spring有一丁点理解。
首先我说说我理解中的IoC是什么。IoC,英文全称是Inversion of Control,Inversion在英文里的意思是:n. 倒置;反向;倒转
如果按这样理解,IoC就是让控制进行反转的东西,那么是对什么控制呢?后来了解到是对对象的创建的控制。
例:
--------------------------------
我们平时编程,创建一个对象是这样创建的:
Object obj = new Object() ;
而如果使用了Spring框架之后,对象就是这样创建的:
Object obj = beanFactory.getBean("obj") ;
不需要自己创建对象,只要你告诉容器,容器帮你创建。
以上是我理解的IoC,有点像今天的买面包。我们把买东西要排队这个规矩定为一个类.
当我们自觉排队时,
QueueRole role = new QueueRole() ;当我们不需要排队,阿姨帮我们排好队时:
QueueRole role = 阿姨.getBean("排队") ;
以上就是我今天买面包引发的思考,如果其中有错误的地方,希望大家指出。
原文地址:http://blog.csdn.net/openjdk8/article/details/38466987