2产品线共享相同的代码

时间:2013-03-20 20:32:57

标签: c# oop refactoring factory

我们正在开发两个将共享相同代码的产品系列。

对于不同的功能,我有两个产品线实现相同的接口(或某些情况下的基类),这些类型将在Main类中创建(对于两个产品线是分开的)并向下游传递。 / p>

对于深入业务逻辑的代码,很难有特定于产品线的代码。我们不想使用if(ProductLine ==“ProductLine1”)和其他方法。

所以我计划实现一个Factory类,它将有静态方法来返回NewObject1(),NewObject2()等等。此Factory类将在Main类中注册为Factory.RegisterClient(ProductLine1)。

因此,使用上述方法,工厂(内部包含ProductLine1Factor& ProductLine2Factory)知道要创建哪种类型的对象。

你知道更好地解决这个问题吗?请注意,ProductLine1已经存在且ProductLine2是新的(但与ProductLine1有90%相似)。我们不能进行大规模的重构,以便存在两种产品线。我们希望尽可能地进行微创代码更改。

工厂方法通常会公开一个接口,但接口的问题是我不能暴露那些也需要的静态类型。

如果有专家能够解释一下,我真的很感激。

1 个答案:

答案 0 :(得分:1)

你的方法听起来不错。

为什么不使用像NInject或Unity这样的完全成熟的IoC框架,而不是自定义工厂?您可以为每个客户端实现两次服务,并在容器配置文件中静态选择一个。这样,如果添加另一个实现,您甚至不需要更改代码的单行,只需重新配置即在xml文件中进行一些更改。

无论如何,IoC容器只是一个工具,使用与否,它只是取代你的工厂(IoC容器有时被称为“类固醇工厂”)。