小编典典

什么是温莎城堡,我为什么要关心?

all

我是一名长期的 Windows 开发人员,对 win32 和早期的 COM 有过初步了解。自 2001 年以来,我一直在使用 .NET,因此我非常精通 C#
和 CLR。在我开始参加 之前,我从未听说过温莎城堡。我已经阅读了温莎城堡的“入门”指南,但没有点击。

教这条老狗新技巧,并告诉我为什么要将 Castle Windsor 集成到我的企业应用程序中。


阅读 99

收藏
2022-07-08

共1个答案

小编典典

Castle Windsor 是一种反转控制工具。还有其他人喜欢它。

它可以为您提供具有预构建和预连接依赖项的对象。 通过反射和配置而不是“新”运算符创建的整个对象图。

从这里开始:http:
//tech.groups.yahoo.com/group/altdotnet/message/10434


假设您有一个电子邮件发送课程。电子邮件发件人。假设您有另一个类 WorkflowStepper。在 WorkflowStepper 中,您需要使用
EmailSender。

你总是可以说new EmailSender().Send(emailMessage);

但这 - 使用new- 会产生难以改变的紧密耦合。(毕竟这是一个小小的人为的例子)

那么,如果不是在 WorkflowStepper 中新建这个坏男孩,而是将它传递给构造函数呢?

因此,无论谁调用它,都必须更新 EmailSender。

new WorkflowStepper(emailSender).Step()

想象一下,您有数百个只有一个职责的小类(google SRP)..您在 WorkflowStepper 中使用了其中的一些:

new WorkflowStepper(emailSender, alertRegistry, databaseConnection).Step()

想象一下,不用担心EmailSender写作时的细节WorkflowStepperAlertRegistry

你只是担心你正在处理的问题。

想象一下整个对象和依赖关系图(树)在运行时连接起来,所以当你这样做时:

WorkflowStepper stepper = Container.Get<WorkflowStepper>();

您可以真正处理WorkflowStepper在需要它们的地方自动填充的所有依赖项。

没有new

它只是 发生 了——因为它知道什么需要什么。

您可以使用设计更好的 DRY 代码以可测试和可重复的方式编写更少的缺陷。

2022-07-08