这种模式的名称是什么?

时间:2010-07-29 07:01:18

标签: design-patterns

该模式的名称是什么?我猜,这是一家工厂,但我不确定。

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实例而没有别的。

2 个答案:

答案 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变体。