c# - 为什么抽象工厂使用抽象类而不是接口(interface)?

标签 c# oop design-patterns abstract-factory

我正在学习设计模式,书中的第一个例子是关于抽象工厂的。 我在 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/

相关文章:

java - 定义一个以接口(interface)作为值的映射,并在同一接口(interface)内声明

design-patterns - 这种设计模式有名字吗?

C# 重载无效参数

design-patterns - 做一个邪恶的快速编译器的主要设计选择是什么?

c# - 当 .Count() 大于零时从 .Select() 获取 NullReferenceException LINQ to XML

java - 如何从变量创建自定义类? (不是对象)

c# - System.Convert 不包含 "toString"的定义

c++ - 类包含其他类问题的字段

c# - C# 中的 JSON 字符串到 CSV 和 CSV 到 JSON 的转换

c# - Entity Framework 4 中的左外连接太多了吗?