Где подключить фабричный метод к абстрактному фабричному шаблону? - PullRequest
0 голосов
/ 28 января 2012

// Абстрактный фабричный класс

class pizzaStore
{
     public:
      vector <string> toppingsType;

      virtual void bakePizza        (){}
      virtual void preparePizza     ()
      {
           for (int i = 0; i < toppingsType.size (); i++)
           {
            addTopping (toppingsType[i]);
           }
      }

      virtual void cutPizza         (){}
      virtual void boxPizza     (){}
};

class xPizzaStore : public pizzaStore
{
     xPizzaStore () 
     {
      toppingsType = "1";
      sauceType      = "2";
      cheesetype     = "3";
     }

     void orderPizza ()
     {
      bakePizza ();
      preparePizza ();
      // xPizzaStore doesn't cut the pizza.
      boxPizza ();
     }
};

// Фабричный метод для создания магазинов

pizzaStore * whichStore (string storeName)
{
      pizzaStore obj = NULL;

      if (storeName == "x")
      {
           obj = new xPizzaStore ();
      }
      else if (storeName == "y")
      {
           obj = new yPizzaStore ();
      }
      else if (storeName == "z")
      {
           obj = new zPizzaStore ();
      }

      return obj;
}

// Фабричный метод для создания пицц

pizzaStore * whichPizza (string pizzaName)
{
      pizzaName obj = NULL;

      if (pizzaBaseType == "x")
      {
           obj = new xPizzaName ();
      }
      else if (pizzaBaseType == "y")
      {
           obj = new yPizzaName ();
      }
      else if (pizzaBaseType == "z")
      {
           obj = new zPizzaName ();
      }

      return obj;
}

ТамЭто могут быть различные типы магазинов, а также пиццы.
В какой класс должны быть включены эти два фабричных метода и почему?Имеет ли смысл включать их в сам класс pizzaStore?

1 Ответ

0 голосов
/ 28 января 2012

Имеет ли смысл включать их в сам класс pizzaStore?

Да , должно быть прекрасно использовать этот метод в class pizzaStore как static методы. Как правило, я считаю, что использование такого фабричного метода в class основано на его типе return, и pizzaStore является хорошим кандидатом для него.

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