我有一个用 C# 编写的简单类库(COM+ 服务)来使用 5 个 Web 服务:加、减、除、乘和比较。
我创建了抽象产品和抽象工厂类。抽象产品名为 WS 的代码:
public abstract class WS
{
public abstract double Calculate(double a, double b);
public abstract string Compare(double a, double b);
}
如您所见,当其中一个子类继承 WS 时,必须重写这两种方法,这在某些子类中可能没有用。例如,比较不需要Calculate() 方法。
为了实例化一个新的 CompareWS 对象,客户端类将调用 CreateWS() 方法,该方法返回一个 WS 对象类型。
public class CompareWSFactory : WSFactory
{
public override WS CreateWS()
{
return new CompareWS();
}
}
但是如果在 WS 中没有定义 Compare(),则无法调用 Compare() 方法。这是因为客户端将使用 WS 类型对象,而不是 CompareWS 对象。
这只是一个有两种方法的例子,但是如果有更多方法呢?在 WS 类中将所有方法都定义为抽象是愚蠢的吗?
我的问题是:我想定义 WS 的所有子类共有的抽象方法,而当工厂创建 WS 对象类型时,可以调用子类的所有方法(WS 的重写方法以及子类中的方法)。我该怎么做?