使两个工厂返回实现两个接口的同一对象

时间:2017-06-22 09:41:09

标签: oop factory multiple-inheritance

(我在我的例子中使用了C#,但这个问题并不是特别关于C#。)

我们有工厂为多个接口创建对象,每个接口一个工厂。

假设我们有一个IPrinting来为ScanningFactory创建一个实现IScanningIPrinting的对象。我们有实现IScanning的具体打印机和实现ScanningFactory的具体扫描程序,工厂决定选择哪种实现。

public static IScanning Build() { ... return new CanonXYZ2000(); } 我有:

PrintingFactory

我在main中有相似的代码,在scanner = ScanningFactory.Build(); printer = PrintingFactory.Build(); 我有:

public class CanonXYZ2001MultiPurpose: IPrinting, IScanning {...}

现在,如果我想实例化一个实现两个接口的对象会发生什么?

{{1}}

我希望两个工厂都返回相同的对象。我该怎么做呢?

1 个答案:

答案 0 :(得分:0)

如果我理解正确,你问是否可以通过ScanningFactory和PrintingFactory创建CanonXYZ2001MultiPurpose?

在这种情况下,两个工厂都可以返回CanonXYZ2001MultiPurpose的实例,没有任何问题,因为这个类实现了两个接口:

扫描工厂代码:

public static IScanning Build() 
{
    ...
    return new CanonXYZ2001MultiPurpose ();
}

打印工厂代码:

public static IPrinting Build() 
{
    ...
    return new CanonXYZ2001MultiPurpose ();
}

这两个变量现在都包含CanonXYZ2001MultiPurpose的实例:

var scanner = ScanningFactory.Build();
var printer = PrintingFactory.Build();