一个新手问题的排序...
我正在将一些帐单信息添加到现有应用程序中以自动开票。我们确定我们公司使用4种不同的计费机制。 (根据合同,不同的客户计费方式不同。)其他计费机制也有可能发挥作用。如果要开发一种新的计费机制,甚至对现有计费机制进行更改,我都希望以不需要重新编译和重新分配的方式进行开发。基本上,我希望仅推送一个新的或更新的“计费模块”,系统便会识别它。
我认为计费模块将包含xaml,该xaml定义了收集特定于一种机制的数据所必需的接口,以及用于确定发票金额的算法。如果重要的话,它是WPF / MVVM应用程序。这是依赖注入的目的还是这是不同的编码范例?
谢谢。
答案 0 :(得分:0)
依赖注入是一种构造需要其他对象起作用的对象的方法。如果对象A需要对象B和C,而对象C需要对象D,则B,C和D是A的“依赖项”。
对象B,C,D和E可能具有不同的口味,并且可能具有不同的配置。
依赖注入(DI)依赖于在客户端对象外部构造的B,C,D和E。通常,通过客户端的构造函数将对这些对象的引用传递给Client对象。
更高级的系统(例如框架)使用称为“ DI容器”或有时称为“服务定位器”的特殊工厂对象来创建对象及其依赖项。最终产品仍按上述方式注入到Client对象中。
听起来有点像您正在做的事情..除了系统需要事先了解其创建的对象外!就您而言,您正在发明新的对象-记帐系统-,而您的系统可能还不知道。
您可能需要考虑其他机制,例如浏览器所看到的“插件”系统,可以在其中添加新功能。通常,Microsoft中的新功能是通过添加新的DLL来添加的,或者甚至提供不同版本的DLL,以实现示例中的计费系统的不同版本。
简而言之,尽管您可能将DI用作解决方案的一部分,但DI的概念太低,无法单独实现您需要的东西。
最后,DI通常是对象编程的概念,并且不限于任何特定的语言或框架。