Как называется этот шаблон? - PullRequest
1 голос
/ 29 июля 2010

Как называется этот паттерн?Я думаю, это фабрика, но я не уверен.

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 ]

2 голосов
/ 29 июля 2010

Это фабрика видов, но не фабричный шаблон .

Также обратите внимание, что фабричный шаблон (или варианты), как правило, имеет только один метод с одним (или несколькими) параметрами, с помощью которых он может решить, для какого типа создать экземпляр, а не два (или более) метода. .

Я бы также переименовал методы во что-то вроде «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...
    }
}

Это будет реализация шаблона фабричного метода , а не абстрактного фабричного шаблона . Последняя ссылка также содержит пример в C #, но я сомневаюсь, что вам понадобится полная реализация абстрактной фабрики.

0 голосов
/ 29 июля 2010

Он создает и возвращает объекты, так что это какой-то вариант Фабрики или Строителя. Поскольку он возвращает простые, а не сложные объекты, это вариант Factory.

...