我正在学习设计模式,书中的第一个例子是关于抽象工厂的。 我在 VS 中构建了这个练习,一切看起来都不错,但有一个问题我想知道。
书中工厂类是这样实现的:
public abstract class AbstractVehicleFactory
{
public abstract IBody CreateBody();
public abstract IChassis CreateChassis();
public abstract IGlassware CreateGlassware();
}
完成练习后,我注意到上面的类可以用这段代码代替:
public interface IAbstractVehicleFactory
{
IBody CreateBody();
IChassis CreateChassis();
IGlassware CreateGlassware();
}
当然这两个示例的功能完全相同,但我想知道使用抽象类而不是接口(interface)的原因是什么?
最佳答案
"abstract factory" 中的“摘要”与抽象类
中的“抽象”无关。抽象工厂是具体工厂的“基础”,但设计模式本身并不强制执行任何特定的实现。抽象工厂可以是抽象的,甚至可以是具体的类、接口(interface)或某种形式的鸭子类型对象,具体取决于您使用的语言。
确实在 C# 中 interface
是指定抽象工厂的非常合理的方式。
关于c# - 为什么抽象工厂使用抽象类而不是接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18840227/