0

目前我正在开发两个非常相似的解决方案(第一个针对 A 国,第二个针对 B 国)。我正在使用 wpf、c#、mvvm、sql 服务器。

每个解决方案中的一些模块都是相同的,其中一些是部分不同的(例如,一些类有额外的字段或方法),还有一些是完全不同的(例如 VAT 模块)。对我来说,开发完全独立的解决方案并不是最好的解决方案(时间成本)。

所以,我正在考虑创建两个解决方案(A 和 B),它们只包含我准备用户界面的主屏幕。然后,在第三个解决方案(C)中,我将拥有项目(=模块)并将它们从 A 或 B 链接起来。

如果两个版本的模块相同 - 没问题。如果它完全不同 - 好的,我必须独立开发它。但是,问题是如何设计略有不同的模块?

我是否应该使用抽象工厂设计模式并将所有相同的内容放入 AbstractProduct 中,并在 ConcreteProducts 中放入其他字段/方法?对于 WPF 表单,我不能使用这种模式——我必须为每个版本开发一个表单。

谢谢。

4

1 回答 1

0

你真正想要使用的是依赖注入。

首先,您创建一个接口,然后让您的具体实现为每个国家/地区实现此接口。

interface ISolution
{
....
}

class CountryA : ISolution{
...
}


class CountryB : ISolution{
...
}

然后将这些接口注册到组合根的实现映射。

private static IContainer ConfigureDependencies() {
            return new Container(x =>{
                x.For<ISolution>().Use<CountryA>();

            });
        }

然后你要求容器给你一个 ISolution 的实例。它将为您提供正确的 impl。

您可以对 CountryB 执行相同的操作。

你可以有自动连接或后期绑定,更动态的东西。你可以切换impls。

看看结构图的例子。

于 2012-06-04T19:11:11.003 回答