这是工厂方法吗?

lun*_*nar 1 design-patterns factory-pattern

工厂模式由实现特定接口的类组成.它总是必须是一个界面吗?当我有从其他类继承而不是接口的子类时,它仍然是一个工厂方法吗?

Ree*_*sey 5

工厂方法模式并不一定有什么用接口做(在语言的方面interface关键字或结构).您可以拥有创建类实例的工厂方法,并且可以像使用接口一样轻松地构造子类而不是基类.

例如,请参阅此Wikipedia示例.这里Room创建了一个a ,主类型的子类创建了不同的具体Room实例类型.即使没有涉及"接口",这仍然使用Factory方法模式.

我的问题是,如果我用父类"替换"接口,它仍然是工厂方法吗?

是的 - 它仍然是一种工厂方法.

  • @lunar你总是创建一个实现某种形式"契约"的对象实例 - 根据语言,这可能是一个接口,一个基类,或其他一些机制. (2认同)