情况是这样的。 我们有两台来自不同供应商(制造商)的打印机。 我们希望顶级代码不了解有关提供程序的详细信息,而只使用统一的 API。 所以我已经开始提取接口(interface)了。
public interface IPrinterProvider {
bool Connect(string comPort);
bool IsConnected();
}
好的。 现在,我意识到一台打印机需要 Password 属性,而另一台则不需要。 那么,我该怎么办?
再一次。 据我所知,我将有一个或几个接口(interface)和几个实现者。 但是调用者将如何工作? 我应该创建一个单独的类,它可能不实现任何接口(interface)吗?例如:
public class CommonPrinterProvider {
private IPrinterProvider printerProvider;
public CommonPrinterProvider(IPrinterProvider printerProvider) {
this.printerProvider= printerProvider;
}
}
所以,总共有两个问题。
最佳答案
我会将打印机“设置”(或者更准确地说,“连接设置”)封装到另一个类中,并将其放在接口(interface)
中。有点像这样:
public class PrinterSettings {
public string Password { get; set; }
public int Port { get; set; }
/* .. others .. */
}
public interface IPrinterProvider {
void Initialize(PrinterSettings settings);
bool Connect(string comPort);
bool IsConnected();
}
然后每个实现都可以以他们认为合适的任何方式处理设置。
关于c# - 如何设计两个相似(但不完全)的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17989736/