原标题: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。返回搜狐,查看更多

责任编辑:

java ioc是什么意思_Java技术面试题解析:举例说明什么是IoC相关推荐

  1. java 多态判断非空_Java 面试知识点解析基础知识

    文本公众号来源: 我没有三颗心脏作者: 我没有三颗心脏 (一)Java 基础知识点 1)面向对象的特性有哪些? 答:封装.继承和多态(应要多算一个那就是抽象) 封装是指将对象的实现细节隐藏起来,然后通 ...

  2. 下面选项中不是开发java程序的步骤是_Java基础试题及其答案2

    Java试题 1) java程序中,main方法的格式正确的是().(选择一项) a)static void main(String[] args) b)public void main(String ...

  3. java 面试什么是类_Java 面试题代码类收集

    long temp=(int)3.9; System.out.println(temp); temp%=2; System.out.println(temp); 3 1 View Code Java里 ...

  4. java 字节码加载_java面试题jvm字节码的加载与卸载

    虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验,转换分析和初始化,最终形成可以被虚拟节直接使用的JAVA类型,这就是虚拟机的类加载机制. 类从被加载到虚拟机内存到卸载出内存的生命周期 ...

  5. java判断题及答案_Java面试题及解析(判断题)

    1.代码差错,判断代码对错,并指出错误处 abstract class Name{ private String name; public abstract Boolean isStupidName( ...

  6. java基础选择判断题_java基础试题3(选择) | 学步园

    第四组: 1.要从文件"file.dat"中读出第10个字节到变量c中,下列哪个方法适合?() A.FileInputStream in=new FileInputStream(& ...

  7. 2020京东java面试笔试总结 (含面试题解析)

    本人5年开发经验.19年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.京东等公司offer,岗位是Java后端开发. 因为发展原因最终选择去了京东,入职一年时间了,也成为了面试官,之前 ...

  8. 【搞定Jvm面试】 Java 内存区域揭秘附常见面试题解析

    本文已经收录自笔者开源的 JavaGuide: https://github.com/Snailclimb ([Java学习 面试指南] 一份涵盖大部分Java程序员所需要掌握的核心知识)如果觉得不错 ...

  9. java在线打开xml文件_java实现简单解析XML文件功能示例

    本文实例讲述了java实现简单解析XML文件功能.分享给大家供大家参考,具体如下: package demo; import java.io.File; import java.io.IOExcept ...

最新文章

  1. pdo mysql防注入_Php中用PDO查询Mysql来避免SQL注入风险的方法
  2. mysql could not create connection_mysql8.0 Could not create connection to database server.解决办法...
  3. arcgis 10.0中的server报错说工作站服务没有打开
  4. Ajax和JSON-学习笔记01【原生JS方式实现Ajax】
  5. Java----代码优化篇
  6. kotlin学习笔记——集合及集合操作符
  7. css table嵌套内部table不受外部影响_HTML+CSS网页一揽子(4)
  8. win7系统 普通管理员被删除,超级管理员被禁用。普通用户下。怎么激活administrator
  9. 获取Resources文件下图片的精灵格式
  10. (原創) 網站CSS重新調整,全面支援IE6與FireFox 2.0!! (Web) (CSS)
  11. web前端课程设计源码大全(HTML+CSS+JS)
  12. meo学习笔记3:并行与并发,线程与进程的区别
  13. 理解virt、res、shr之间的关系(linux系统篇)
  14. Java集合底层原理理解
  15. 基于QT实现的职工住房管理系统
  16. 基于simulink的双闭环矢量控制的电压型PWM整流器仿真
  17. Flex 下 mm.cfg 文件配置详解
  18. 计算机键盘怎么打勾符号,word方框(□)中打钩(√)的3种方法
  19. 问题:jupyterbook打印行数不全
  20. ChatGPT列出全球最强的10个国家,中国排名意外

热门文章

  1. windows文件服务器双机热备_服务器双机热备解决方案
  2. CC2540的HAL层UART学习笔记
  3. Microsoft Visual Studio 2012正式版官方下载
  4. 青年心理成熟的十条标准
  5. Python文件循环写入行时防止覆盖
  6. 生成一段python代码,它可以绕过起点中文网的限制获取最新更新的小说内容
  7. 数据库中的各种定义,关系、关系模式、关系模型……
  8. 计算机组装时应该注意的硬件参数,新手在组装电脑时该注意什么?除硬件的搭配,最容易忽视的一点...
  9. 中海达原始数据转RINEX
  10. Hammer设置详解