8

介绍

MacApp Macintosh 应用程序框架 [App89] 总是将定义工厂方法的抽象操作声明为 Class* DoMakeClass(),其中 Class 是 Product 类。

这句话让我想到了关于工厂方法设计模式的命名约定的问题。

期望

我希望看到提供清晰的工厂方法命名的最佳实践或有用的示例。

由于它可能依赖于一种语言,让我们考虑一组最流行的语言:C#、Java、C++ 和 JavaScript。

语境

对于上下文,我建议考虑以下类结构。我们有两个抽象类:Document 和 Application。该应用程序包含一个文档列表,应该可以创建一个新文档。Application 有一个工厂方法CreateDocument()

在此处输入图像描述

谢谢

4

2 回答 2

7

恕我直言,方法名称取决于上下文和所创建对象的性质。也许这就是您没有找到任何明确约定的原因。例如,一种Create()方法可能在一种情况下是正确的,而在另一种情况下Open()可能Build()更合适。

于 2013-08-11T12:17:00.663 回答
0

没有与此设计模式相关的严格约定。最佳实践是使用“ Do”或“ Make”前缀来标记某些语言中的工厂方法,这些语言没有嵌入虚拟或抽象方法(例如,javascript)。

于 2013-08-12T12:18:47.497 回答