se缩写的中文含义(ioc缩写的中文含义)
大家好,下面和大家分享一下se缩写的中文意思(ioc缩写的中文意思)。以下是详细的解释。现在让我们来看看!
ioc缩写的中文含义(se缩写的中文含义)导航
共享充电宝的 IOC思考复杂依赖。IOC定义了spring的IOC和工厂模型的IOC容器引用的技术分析结论。此段摘自智纳工坊《春靴之战》纪录片第十三章。感谢阅读。预计需要3分钟阅读。对象本身从它所依赖的管理中解放出来,这种管理的责任转移给第三方。
分享充电宝
很尴尬 手机一直是我们生活中不可或缺的一部分,但是伴随着手机充电的问题。可能是2011年,作者和同学在学校买火车票。因为是晚上的火车票,我觉得是提前购买的。学生们约定晚上去火车站候车室,把票给学生。
下午五点半,笔者早早就到了火车站,大概二十分钟。到站后刚好赶上排队(一般是一个小时的预演),却正好在现场——手机没电了。你要找我查票,这还是你同学之间的事。我同学已经进站,正在二楼候车。我礼貌地邀请售票员跳过我,先检查一下门卫。我也想联系我的同学。
我还记得一个电话号码或者打开公用电话,但是我不记得我同学的手机号了。我在排队,检查通道开始关闭。
我想给自己的金属或者宝藏充电。多少钱?
讲到这里,我同学突然冲下楼,给了我一张票,解决了这个尴尬。
因为手机都是死的,而且很多都没有充电线,我想很多人都有生活经验。
多年以后,很多同学可能会觉得这很可笑。为什么不共享充电宝?因为没有。
分享充电宝
虽然这样的事情很常见,但是仍然没有引起手机厂商的重视(直到今天,手机的续航能力还是有问题的)。通常,我们会做门前发生的事情:
通过充电宝寻找路人。在酒店吃饭,找店家帮忙。去酒店充电。另外,由于不同手机厂商的充电线接口不同,你可能还是需要买一根充电线。
这些不仅增加了你的时间和金钱成本,也增加了新的沟通成本。
于是,共享充电宝诞生了。它为用户提供各种形状的充电电路和电源,用户只能使用。
共享计费宝的模式是将收费过程中的所有设备和程序打包到一个盒子里(类似于一个容器),这与IOC思维的软件架构并不匹配。
国际奥委会的想法
IOC(控制反转)控制反转(Control Inversion)是对象编程的一个设计原则,用来减少代码之间的耦合。基本思想是通过第三方和依赖来解耦对象。对象之间复杂的依赖关系
在一个面向对象的软件系统中,底层实现由N个对象组成,这些对象之间相互传递,最终实现系统的业务逻辑。注:面向对象请参考《类和实例的通俗理解》
在上面显示的齿轮排列中,它有几个独立的齿轮,这些齿轮连接在一起共同工作,完成任务。在这样的齿轮组中,我们可以看到,如果齿轮出现问题,可能会影响整个齿轮组的正常工作。
齿轮组中齿轮之间的啮合关系非常类似于软件系统中对象之间的耦合关系。对象之间的耦合关系是必然和必要的,是协同工作的基础。
但是,随着软件系统规模的增大,对象之间的依赖关系变得越来越复杂,经常会出现对象之间的多重关系。
为了解决对象之间的过度耦合问题,软件专家提出了IOC理论来实现对象之间的“解耦”,并且该理论已经成功应用于实践。
国际奥委会定义
控制反转(IOC)是面向对象编程的一个设计原则,可以用来降低计算机代码之间的耦合性。(百度百科)既然名字叫控制,那我们就来看看什么是控制,发生了什么。
早在2004年,马丁·福勒就提出了“什么是反转?”这个问题。他总结了依赖的对象,因为大部分应用都是通过两个或两个以上的类来实现彼此之间的企业逻辑,这样每个对象都需要通过协作来获取对象。(指它所依赖的对象)。如果采集过程本身实现,会导致代码耦合度高,维护调试困难。
控制的内容:控制对象的创建和销毁是指控制对象的生命周期。变化是:在我们创建对象之前是新的,现在有了IOC,指的是对象在IOC容器上的控制。IOC将具有依赖关系的对象与“第三方”分开,如下所示:
由于中间位置引入的“第三方”是IOC容器,A、B、C、D四个对象没有耦合,档位之间的传递依赖于“第三方”。所有对象的所有控制权都交给了“第三方”IOC容器,因此IOC容器成为了整个系统的关键核心。它的作用就像一种“粘合剂”,所有的物体都粘在一起。如果这种“粘合剂”没有失去,物体就会互相失去,这就是IOC容器作为“粘合剂”的由来。
为了更直观的理解,我们可以占据。这次A、B、C、D四个对象没有耦合关系,互不接触。也就是当你意识到的时候,你不需要考虑B,C,D,对象之间的依赖已经降到了最低。
最后用图片介绍一下国际奥委会。
注:我
OC可以被视为一种新的设计模式,但理论和时间成熟相对较晚,而不是包含在GOF中。见百度Baisu - 控制逆国际奥委会在春天IOC和工厂模型
实现IOC主要有三种技术:工厂模型、XML分析和反射。
工厂模型在Java/C#中被广泛使用。
在工厂模式中,我们不会将对象暴露给客户端到客户端,而是使用公共接口来引用新创建的对象。
工厂模型相对简单。
客户端(客户)需要一个产品对象,无需通过新的关键字是直接创建的,而是为工厂(工厂)发起新对象请求。在此过程中,客户端只需要为所需对象提供对象的类型。工厂实例化了一个特定的产品对象,然后返回客户端(客户)产品对象(转换为抽象类类型)。客户使用产品对象无需了解特定的实现细节。根据实践,这里还是简单演示一下。
第一步
创建界面形状。Java语言(一种计算机语言,尤用于创建网站)
公共界面形状{ void draw();}第二步
创建一个实现相同接口的特定类。几个类别如下
rectangle.java。
公共类矩形实现形状{ @Override. public void draw(){ system.out.println(“internangle :: draw()方法”。); }}Square.java。
公共类广场进口形状{ @Override. public void draw(){ system.out.println(“square :: draw()方法中。); }}circle.java。
公共类圆圈实现形状{ @Override. public void draw(){ system.out.println(“内部圈子:: draw()方法。”); }}第三步
创建一个工厂,根据给定的信息ShapeFactory.java生成特定的类。
公共类shapefactory { //使用getShape方法获取类型的对象 公共形状getshape(string shapendety){ if(shapeType == null){ 返回null; } if(shapeType.equalsignoreCase(“圆”)){ 返回新圆圈(); }否则if(shapertype.equalsignorecase(“矩形”){ 返回新的矩形(); }否则if(shapeType.equalsignoreCase(“Square”)){ 返回新广场(); } 返回null; }}第四步
使用工厂通过交付类型获取特定类的对象。FactoryPatternndemo.java。
公共类FactoryPatterndemo { 公共静态void main(String [] args){ shapefactory shapefactive = new shapefactory(); //获取圆的对象并调用其绘制方法。 形状形状1 = shapefactory.getshape(“圆圈”); //呼叫绘制方法 shape1.draw(); //获取矩形对象并调用其绘制方法。 形状形状2 = shapefactive.getshape(“矩形”); //呼叫绘制方法的矩形 shape2.draw(); //获取广场的对象并呼唤其绘制方法。 形状形状3 = shapefactory.getshape(“Square”); //呼叫绘制方法 shape3.draw(); }}引入工厂模型的好处是显而易见的:通过添加新的形状(比如三角形),我们不必修改现有的架构,只需要shapefactory。分机(中频/开关)。
上面的工厂实现基于传入参数的对象。添加形状类型后,修改ShapeFactory类。这种方法不够灵活,违背了软件设计的开放性和封闭性原则。
通过反射,每当添加新接口时,修改工厂类代码就变得很容易。
注意:反射机制指的是程序中任何类的操作。可以知道属于任何对象的类,可以知道任何类的任何成员变量和方法,可以调用任何对象属性和方法。这种动态收集程序信息,动态调用对象的功能,被称为Java语言的反射机制。(百度百科-Java反射机制)
我们只需要shapefactory。重建,如下所示:
公共类shapefactory { 私有shapefactory(){} 公共静态形状getInstance(String ClassName){ 形状形状= null; 尝试 { 形状=(形状)class.forname(classname).newinstance(); catch(classnotfoundException e){ e.printStacktrace(); 捕获(IllowAlvestException e){ e.printStacktrace(); 捕获(实例化exception e){ e.printStacktrace(); } 返回形状; }}这里,我们将类名作为工厂的参数,工厂使用反射机制来找到相应的对象并创建一个实例。
什么??你说你没有看到倒影的影子。然后去class.forname看看。
@callersissitive.公共静态类 forname(字符串类名称) 抛出classnotfoundException { 班级 来电者= reflection.getCallerClass(); 返回forname0(classname,true,classloader.getclassloper(呼叫者),来电者;}然后,让我们参加一个测试案例。
@测试void testfactfactory(){/ ** *获取循环实例 * * /形状shapecircle = shapefactory.getInstance(“com.zhike.blogmanager.shape.circle”);shapecircle.draw();/ ** *获取矩形实例 * * /形状shaperectangle = shapefactory.getInstance(“com.zhike.blogmanager.shape.rectangle”);shaperectangle.draw();/ ** *获得正方形实例 * * /形状shapeSquare = shapefactory.getInstance(“com.zhike.blogmanager.shape.square”);shapesquare.draw();}看执行结果。
2021-10-04 22:41:50.514 ==== [main]信息com.zhike.blogwebapi.blogwebapiapplicationstests - 启动博客WebapiaPplicationTess 6.359秒(JVM运行8.133)内部圈子:: draw()方法。内部矩形:: draw()方法。在方形:: draw()方法。流程完成退出代码0从角度上,我们进一步验证了我们的想法。
到了这里我会问有没有读者。你与工厂和国际奥委会有关系吗?记住,我之前提到过,IOC的实现主要使用三种技术:工厂模型、XML分析和反射。
国际奥委会春季技术分析
IOC容器实际上是一个大型工厂,管理所有对象和依赖关系。
原则是通过Java反射技术实现!通过反射,我们可以获得所有信息(成员变量,类名等)!类别和类之间的关系是通过配置文件(XML)或注释来描述的。我们可以通过构建这些配置信息和反射技术来构建相应的对象和依赖关系!
让我们看看实际的Spring IoC容器是如何实现对象的创建和依赖的:
根据bean配置信息在容器内的容器中创建bean devile注册表根据注册表,实例化bean建立bean,在bean和bean之间建立依赖项将这些准备就绪的bean放在地图缓存池中,等待应用程序调用(1)豆制品厂
春豆是典型的工厂模式。这一系列的bean plants,也就是IOC容器,为开发者管理对象之间的依赖关系提供了很多便利和基础服务,为用户提供了很多IOC容器。以及选择和使用,它们相互关联如下:
作为顶级接口类,BeanFactory定义了IOC容器的基本功能规范。
最基本的IOC容器接口BeanFactory
公共类矩形实现形状{ @Override. public void draw(){ system.out.println(“internangle :: draw()方法”。); }}0BeanFactory中只定义了IoC容器的基本行为,并不关心你的bean是如何定义和加载的。由于我们只关心工厂的产品,是工厂生产了这些对象,这个基本接口并不关心。
要了解工厂如何生成对象,我们需要查看特定的IOC容器实现。Spring提供了许多IOC容器。例如XMLBeanFactory、ClassPathxMlApplicationContext等。
②豆豆义法
Springioc容器管理我们定义的各种bean对象及其关系,Bean对象在Spring实现中用BeanDefinition描述。继承制度如下:
Spring IoC的实现过程比较复杂,相关源代码可以研究一下。感兴趣的同学可以下载源码查看Spring框架源码。
结论
IOC不是一种技术,而是一种设计理念。
在spring中开发、创建、初始化、销毁IOC容器控件对象等。这也实现了对象控制的倒置,对对象的控制转化为弹簧IOC对对象的控制。
以上只是春日木卫一的看法和想法。欢迎文明讨论交流。
涉及
春天IOC了解“百度百科全书 - 控制反向工厂模式工厂模型Spring IoC最完整的源代码详细的Bean Instantial ProcessSpring5源代码分析(1)IOC和Spring Core容器架构春季IOC知识点摘要以上解释了se缩写的中文意思(ioc缩写的中文意思)。这篇文章已经分享到这里了。希望能帮到大家。如果信息中有任何错误,请联系边肖进行更正。
相关推荐
- 出包王女有多少集02-16
- 考编和考公务员的区别12-01
- 花旗参泡水喝的功效 经常喝有这7大好处12-01
- 属鼠的几月犯月,属鼠的几月出生最不好12-01
- 中职专业课面试科目指定教材02-16
- 车轮胎到底多久更换一次12-01
- 做梦在结婚是什么征兆12-01
- 二极管漏电流多大时会影响使用寿命12-01
- 做梦打架是啥意思02-16
- 苹果13辅助圆球怎么设置12-01