【发布时间】:2013-06-17 18:34:57
【问题描述】:
我需要一个模式:
我正在使用 C#。
假设有三个演员;吉姆、帕特和莎莉。 Pat 的工作是创建一个接口作为 Jim 和 Sally 之间的合同。 Sally 的工作是创建一个实现接口的类,Jim 的工作是编写一个使用 Sally 对象的类。
Jim 不应该知道 Sally 的具体对象,只知道它实现了公共接口。
Pat 需要在合同中包含一种方法,让 Jim 创建 Sally 的具体对象的实例,但作为接口引用。
无法在接口或抽象类中包含静态方法定义,因此您不能执行以下操作:
public interface IFoo
{
public static IFoo CreateIFoo();
}
Pat 如何编写合同来保证 Sally 会为 Jim 创建一个方法来创建她的具体对象,该具体对象被引用为接口?
【问题讨论】:
-
工厂模式在这里可能会有所帮助。要么这样,要么您必须将静态方法移至静态帮助程序类,但这不会以任何方式被合同“强制”。
-
感谢“相信我”,您指出了我的困境,没有办法将工厂强制作为辅助类中的静态方法。
标签: c# interface design-patterns contract