该模式的名称是什么?我猜,这是一家工厂,但我不确定。
using System.Windows.Forms;
public class TreeNodeHelper
{
public TreeNode GetTreeNodeType1()
{
return new TreeNode("type1");
}
public TreeNode GetTreeNodeType2()
{
return new TreeNode("type2");
}
// etc
}
TreeNodeHelper类返回TreeNode的不同实例。它只返回TreeNodes实例而没有别的。
答案 0 :(得分:2)
这是一个种类的工厂,但不是 the 工厂模式。
另请注意,工厂模式(或变体)通常只有一个方法,带有一个(或多个)参数,用于决定创建实例的类型,而不是两个(或更多)方法
我还要将方法重命名为“CreateNodeInstance”或类似的东西。您正在创建并返回实例,而不是检索类型。
修改强>
如果不完全了解您的要求,可以采用简单的修改
static public class TreeNodeHelper
{
static public TreeNode CreateNodeInstance(criterion)
{
if (criterion == xyz)
{
return new XyzTreeNode();
}
else if (criterion == foo)
{
return new FooTreeNode();
}
else if (etc...etc...
}
}
这将是factory method pattern的实现,而不是abstract factory pattern。后一个链接还包含C#中的一个示例,但我怀疑您是否需要完整的抽象工厂实现。
答案 1 :(得分:0)
它创建并返回对象,因此它是Factory或Builder的一些变体。由于它返回简单对象而不是复杂对象,因此它是Factory变体。