原标题:Java技术面试题解析:举例说明什么是IoC
IoC是什么呢?有些人可能会有疑问?
IoC便是Inversion of Control,操控回转。在Java开发中,IoC意味着将你规划好的类交给系统去操控,而不是在你的类内部操控。这称为操控回转。
下面咱们以几个例子来阐明什么是IoC。假定咱们要规划一个Girl和一个Boy类,其中Girl有kiss办法,即Girl想要Kiss一个Boy。那么,咱们的问题是,Girl怎么能够知道这个Boy?
在咱们我国,常见的MM与GG的知道办法有以下几种:1青梅竹马;2亲朋介绍;3爸爸妈妈包揽。 那么哪一种才是更好呢?
青梅竹马:Girl从小就知道自己的Boy。
public class Girl ...{
void kiss()...{
Boy boy = new Boy();
}
}
然而从开始就创立的Boy缺点便是无法在替换。并且要担任Boy的整个生命周期。假如咱们的Girl想要换一个怎么办?(笔者严峻不支持Girl常常替换Boy) 亲朋介绍:由中间人担任供给Boy来碰头。
public class Girl ...{
void kiss()...{
Boy boy = BoyFactory.createBoy();
}
}
亲朋介绍,固然是好。假如不满意,尽管另外换一个好了。可是,亲朋BoyFactory常常是以Singleton的方式呈现,否则便是,存在于Globals,无处不在,无处不能。实在是太繁琐了一点,不够灵敏。我为什么一定要这个亲朋掺和进来呢?为什么一定要交给她介绍费呢?万一我的好朋友爱上了我的男朋友呢?
爸爸妈妈包揽:一切交给爸爸妈妈,自己不必费吹灰之力,只需求等着Kiss就好了。
public class Girl ...{
void kiss(Boy boy)...{
// kiss boy
boy.kiss();
}
}
Well,这是对Girl非常好的办法,只需想办法贿赂了Girl的爸爸妈妈,并把Boy交给他。那么咱们就可以轻松的和Girl来Kiss了。看来几千年传统的爸爸妈妈之命还真是有用哦。至少Boy和Girl不必自己瞎忙乎了。
这便是IOC,将对象的创立和获取提取到外部。由外部容器供给需求的组件。
咱们知道好莱坞准则:“Do not call us, we will call you.” 意思便是,You, girlie, do not call the boy. We will feed you a boy。
咱们还应该知道依赖倒转准则即 Dependence Inversion Princinple,DIP。Eric Gamma说,要面向抽象编程。面向接口编程是面向对象的核心。
组件应该分为两部分,即Service, 所供给功能的声明Implementation, Service的完成优点是:多完成可以恣意切换,防止 “everything depends on everything” 问题.即详细依赖于详细。
所以,咱们的Boy应该是完成Kissable接口。这样一旦Girl不想kiss可恶的Boy的话,还可以kiss可爱的kitten和慈祥的grandmother。返回搜狐,查看更多
责任编辑: