2

关于 IoC 和 CBSE 之间的差异,我有几个问题我一辈子都找不到。

我已经使用 IoC/DI 很长一段时间了,特别是在 PHP 中使用 Laravel,所以我认为我对它的工作原理和使用方法有了很好的了解。我最近购买了 George T. Heineman 的《基于组件的软件工程》一书。当谈到组件如何与其他组件通信时,我遇到了一些困惑,因此开始进行一些在线研究。我专门查找 C# 示例,据我所知,CBSE 与 Ioc/DI 非常相似,在某些情况下,我经常想知道人们是否只是把它称为错误的东西。

我在阅读本书时看到的最大区别不是注入依赖关系,而是更加线性,并且在您的界面中告诉它您想要使用哪个类。我觉得好像我完全偏离了基础,错过了 CBSE 的全部要点,但找不到任何让我兴奋的信息。任何人都可以提供一些可以解决这个问题的信息吗?


小更新:
如果我理解正确,CBSE 背后的想法听起来真的很棒。但是我对组件如何相互通信感到困惑。如果我理解正确,组件不应该知道任何其他组件。因此,虽然为所有事情抛出事件都有效,但只有在需要信息的组件知道或期望有 x 个组件抛出该事件时才有效。

我试图解决这个问题有几个原因。看看这是否是我想学习并开始用于我作为应用程序程序员的工作以及我对游戏编程的爱好的路线。我是通过研究游戏编程来了解 CBSE 的。

4

1 回答 1

1

基于组件的软件工程是软件开发的一种范式,它规定应该针对接口依赖性构建软件,以最大限度地提高组件的封装性和可重用性。在许多语言中,这种范式需要控制反转才能满足这种范式。

但是,基于组件的软件工程不是控制反转,它只是一种软件设计模型,可以通过使用 DI 和 IoC 容器最容易和完全地完成。对于 C#,如果您想走基于组件的软件工程路线,那么我会考虑熟悉 DI、IoC 及其各自容器的操作方式。

于 2014-03-22T23:01:34.320 回答