- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我是一名长期的 Windows 开发人员,在 win32 和早期的 COM 方面初露锋芒。自 2001 年以来,我一直在使用 .NET,因此我非常精通 C# 和 CLR。在我开始参与 Stack Overflow 之前,我从未听说过 CaSTLe Windsor。我已阅读 CaSTLe Windsor“入门”指南,但没有点击。
教这只老狗新技巧,并告诉我为什么我应该将 CaSTLe Windsor 集成到我的企业应用程序中。
最佳答案
CaSTLe Windsor 是一种反转控制工具。还有其他类似的。
它可以为您提供具有预构建和预连接依赖项的对象。 通过反射和配置而不是“new”运算符创建的整个对象图。
从这里开始: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
的细节当你写 WorkflowStepper
或 AlertRegistry
您只是担心与您合作的问题。
想象一下对象和依赖项的整个图(树)在运行时连接起来,这样当您这样做时:
WorkflowStepper stepper = Container.Get<WorkflowStepper>();
你得到了真正的交易 WorkflowStepper
所有依赖项都会自动填充到您需要的位置。
new
它只是发生 - 因为它知道什么需要什么。
而且您可以通过设计更好的 DRY 代码以可测试和可重复的方式编写更少的缺陷。
关于c# - 什么是 CaSTLe Windsor,我为什么要关心它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/124871/
我一直在学习如何创建自定义 ArrayAdapter 并熟悉重写 ArrayAdapter 的 getViewTypeCount 和 getItemViewType 方法。 为什么 Android V
我是一名优秀的程序员,十分优秀!