【问题标题】:Question about Prism 4关于棱镜4的问题
【发布时间】:2011-07-17 17:20:05
【问题描述】:

例如,我为 Prism 制作了一个模块,在这个模块中有 2 个文件夹 Models 和 Services。 在 Models 文件夹中,我描述了 Car 类。 现在我想使用工厂创建一个 Car 类的实例。 问题。如何正确地做到这一点。

我想出了两个变种。

1) 创建新文件夹 Infrastructure 并添加 CarFactory 类。

2) 创建服务 CarService 并使用它来创建 Car 类的实例。

【问题讨论】:

    标签: c# design-patterns prism


    【解决方案1】:

    使用 Prism 也使用的服务定位器。这通常是 Unity 或 MEF。

    【讨论】:

    • 在这种情况下,OP 在实例化时可能需要将参数传递给Car 类。如果Car 类具有依赖关系并且需要实例数据,那么在不建立某种“初始化”模式的情况下很难使用直接的ServiceLocator。工厂不会有这个限制。 IUnityContainer 可以通过ParameterOverrides 传递参数,但是传递对容器的引用通常是不受欢迎的。
    【解决方案2】:

    我更喜欢后一种方法。这使我们能够更好地隔离我们的组件。如果您的 ViewModel 接受 ICarService,您可以轻松地模拟它,并且您的 ICarService 实现所具有的任何依赖项都可以在测试 that 时被模拟。

    这很容易理解,并且是放置比典型工厂更多逻辑的好地方。例如,我们会将您通常放在存储库中的方法放在那里。 (保存、获取等)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-10
      • 2022-01-19
      相关资源
      最近更新 更多