Что это за дизайн? - PullRequest
       1

Что это за дизайн?

7 голосов
/ 30 марта 2011

Несколько лет назад я создавал такие интерфейсы:

class Base
{
  public:
    virtual ~Base
    {
    }

    void foo()
    {
      doFoo();
    }

  private:
    virtual void doFoo() = 0;
};

тогда производная будет:

class Derived : public Base
{
  public:
    virtual ~Derived()
    {
    }

  private:
    virtual void doFoo()
    {
    }
};

Я уверен, что где-то видел это как шаблон дизайна, но теперь я нигде не могу его найти и не могу вспомнить, как он называется.

Итак, как называется этот шаблон проектирования?

Ответы [ 2 ]

8 голосов
/ 30 марта 2011

Это шаблон метода шаблона . Соответствующая выдержка из Википедии:

Шаблонный метод определяет программу скелет алгоритма. Один или больше шагов алгоритма может быть переопределено подклассами, чтобы позволить различное поведение при обеспечении что всеобъемлющий алгоритм все еще следуют.

Я видел, как этот шаблон много использовал для "принудительного" вызова реализации базового класса (что обычно должно быть сделано явно в производном классе).

8 голосов
/ 30 марта 2011

Ваш foo метод не должен быть виртуальным.И в этом случае шаблон проектирования называется NVI - не виртуальный интерфейс

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