Как я могу реализовать шаблон фабрики с использованием класса C ++? - PullRequest
1 голос
/ 27 октября 2010

Я работаю над проектом, который в основном был реализован с использованием заводских и фасадных моделей.Однако я не могу понять, поскольку у меня нет четких представлений о том, как работает фабричный шаблон в C ++.Кто-нибудь может предложить хороший образец программы или ссылку на то же самое.

Спасибо

Криссам

Ответы [ 3 ]

2 голосов
/ 27 октября 2010

Хороший веб-сайт для всех запросов шаблонов проектирования: Шаблоны Hudson Design *

В нем почти все шаблоны проектирования GOF, но он объясняется таким образом, который довольно легко понять.,Также включает демонстрации.

1 голос
/ 27 октября 2010

Википедия имеет фабричный шаблон страницы.

Для простых случаев действительно нет хитрости. Just

Foo* createFoo() {
  return new Foo();
}

Это становится сложнее, когда вы хотите сделать больше, чем просто использовать новое. Один хороший пример - если конструктор принимает несколько параметров или если объекты нужно как-то инициализировать. В этом случае вы можете загрузить фабрику с требованиями и не заставлять разработчика беспокоиться о них:

class BarFactory {
    BarFactory(Dep* x, Depen* y) ...

    getBar() {
       return new Bar(x->SOME_METHODS, y->SOMETHINGELSE, ...);
    }

}

В этом примере фабрика устраняет путаницу из правильного создания объекта Bar (представьте, что потребовалось больше аргументов, и им нужно было много рук) Это может быть полезно, когда у вас есть API с большим количеством опций, которые не меняются, или просто плохой API.

1 голос
/ 27 октября 2010

Фабричный шаблон работает на всех языках одинаково.

class NodeFactory {
   SimpleNode createSimple() { return new SimpleNode(); }
   ComplexNode createComplexNode() { return new ComplexNode(); }
};

Фабрика - это просто класс, имеющий методы для создания объектов.

Angelo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...