当前位置: 首页 > 知识库问答 >
问题:

我解释国际奥委会和国际奥委会的方式有什么不对?

仉俊能
2023-03-14

昨天在一次采访中,有人问我,Spring的国际奥委会和国际奥委会是什么。我的回答是:

当a类(a)扩展抽象的类(B)或实现接口(B)或创建其中任何类的类(B)的对象时,则称a依赖于B。注入这种依赖关系,即在costructor或setter方法中注入对象称为DI,在这个过程中,对创建对象的控制权转移到“外部世界”,比如XML配置,这种控制权的反转是IoC。国际奥委会不需要DI。在没有国际奥委会的情况下,我们仍然可以使用DI。

面试官不同意我的观点——我错在哪里?

还有一件事-

因为我们在构造函数或setter方法参数中使用了超类参考变量通过接口编码。这是否与DI/IOC有关,或者这只是为了实现松耦合

共有3个答案

魏鸿
2023-03-14

你的回答让森斯和我有着相同的看法,只是略有不同。

IoC概念最初是在过程编程时代听到的。因此,从历史背景来看,IoC讨论了控制流所有权的倒置,即谁拥有按期望顺序调用函数的责任——无论是函数本身还是您应该将其倒置给某个外部实体。

然而,一旦OOP出现,人们就开始在OOP环境中谈论IoC,在OOP环境中,除了控制流之外,应用程序还涉及对象创建和管理对象之间的关系。这类应用程序想要反转对象创建(而不是控制流)的所有权,并需要一个负责对象创建、对象生命周期的容器

从这个意义上讲,DI与IoC不同,因为它与控制流无关,但它是一种Io*,即对象创建所有权的反转。

我在这里进一步讨论了这个话题。

顾文昌
2023-03-14

第一条语句***“当一个类(a)扩展了抽象类(B)或实现了接口(B)”时”***

这是继承,不能通过Spring作为依赖注入

第二条语句“创建其中任何一个类的类(B)的对象,则a称为依赖于B”

听起来不错

注入这种依赖关系,即在costructor或setter方法中注入对象称为DI

没有一个明确的语句来解释依赖注入。这里需要解释注入的含义。也就是说,依赖的管理是由Spring容器处理的,它是由谁控制它们的生命周期,从而委托/注入给要求它们的类(通过Spring配置文件)

“他对创建对象的过程控制权流向了“外部世界”,比如XML配置”

在这里,控制既不传递给外部世界,也不传递给xml配置文件,而是传递给spring容器。spring容器使用这个配置文件来完成它的工作。

“这种控制反转是IoC。DI不是必要的IoC。在没有IoC的情况下,我们仍然可以使用DI。”

虽然没有问题,但似乎不完整。这里需要解释一下。试图通过图像来解释它

郭弘盛
2023-03-14

IoC(控制反转):与传统控制流相比,反转控制流,即我们不应创建对象和控制流,而应创建对象,将它们连接在一起并管理其生命周期,并使用DI管理组件,即创建对象。

实现控制反演有几种基本技术。

  • 使用工厂模式
  • 使用服务定位器模式
  • 例如,使用依赖注入(DI)
    • 构造函数注入
    • 参数注入
    • 塞特注射
    • 界面注入

    来源

 类似资料:
  • 概述 为了让Django项目可翻译,你必须添加一些钩子到你的Python 代码和模板中。这些钩子叫做翻译字符串。它们告诉Django:“如果这个文本的翻译可用,应该将它翻译成终端用户的语言。”你需要标记这些可翻译的字符串;系统只会翻译它知道的字符串。 Django 提供一些工具用于提取翻译字符串到消息文件中。这个文件方便翻译人员提供翻译字符串的目标语言。翻译人员填充完消息文件后,必须编译它。这个过

  • 介绍 Vant 采用中文作为默认语言,同时支持多语言切换,请按照下方教程进行国际化设置。 使用方法 多语言切换 Vant 通过 Locale 组件实现多语言支持,使用 Locale.use 方法可以切换当前使用的语言。 import { Locale } from 'vant'; // 引入英文语言包 import enUS from 'vant/es/locale/lang/en-US'; L

  • 国际化 Element 组件内部默认使用中文,若希望使用其他语言,则需要进行多语言设置。以英文为例,在 main.js 中: // 完整引入 Element import Vue from 'vue' import ElementUI from 'element-ui' import locale from 'element-ui/lib/locale/lang/en' Vue.use(Elem

  • 资料 ​https://tc39.es/ecma402/​

  • 一般用于根据用户语言,需要输出不同的文案。如果没有国际化的封装,业务里面会有大量的判断,并且业务也不好维护,没法统一管理所有文案。 安装 composer require swoft/i18n Git 仓库 Github https://github.com/swoft-cloud/swoft-event 参与贡献 欢迎参与贡献,您可以 fork 我们的开发仓库 swoft/component

  • 1.11.0 新增 cube-ui 内部所有非可配置的文案,都是中文的形式,所以如果你的应用是需要做对应的国际化文案翻译,那么 cube-ui 1.11.0 这个版本是提供了给 cube-ui 组件的文案翻译的能力,甚至这种能力也能延伸至你的应用。 cube-ui 组件的国际化 cube-ui 默认是用的中文语言包,并且已经注册了。cube-ui 内部也内置了对应的英文语言包,但是你需要如下的逻辑