Редактирование: Design Patterns

Материал из Wiki.crossplatform.ru

Перейти к: навигация, поиск
Внимание: Вы не представились системе. Ваш IP-адрес будет записан в историю изменений этой страницы.
Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 819: Строка 819:
public:
public:
     CObserver(CModel *pMod)  
     CObserver(CModel *pMod)  
-
    {
+
{
         m_pModel = pMod;
         m_pModel = pMod;
-
        m_pModel->attach(this);
+
m_pModel->attach(this);
     }
     }
-
 
-
    virtual ~CObserver()
 
-
    {
 
-
        m_pModel.detach(this);
 
-
    }
 
-
 
     virtual void update() = 0;
     virtual void update() = 0;
protected:
protected:
Строка 1006: Строка 1000:
== Цепочка обязанностей (Chain of Responsibility) ==
== Цепочка обязанностей (Chain of Responsibility) ==
== Шаблонный метод (Template Method) ==
== Шаблонный метод (Template Method) ==
-
<source lang="cpp">#include <iostream>
 
-
 
-
class CApp
 
-
{
 
-
public:
 
-
void openDocument()
 
-
{
 
-
//...
 
-
doOpenDocument();
 
-
//...
 
-
}
 
-
 
-
protected:
 
-
virtual void doOpenDocument() { std::cout << "Open simple document" << std::endl; }
 
-
};
 
-
 
-
class CXmlApp: public CApp
 
-
{
 
-
protected:
 
-
void doOpenDocument() { std::cout << "Open XML document" << std::endl; }
 
-
};
 
-
 
-
class CTxtApp: public CApp
 
-
{
 
-
protected:
 
-
void doOpenDocument() { std::cout << "Open TXT document" << std::endl; }
 
-
};
 
-
 
-
int main()
 
-
{
 
-
CApp *pApps[] = { &CApp(), &CXmlApp(), &CTxtApp() };
 
-
for( int n = 0; n < 3; ++n )
 
-
pApps[n]->openDocument();
 
-
return 0;
 
-
}</source>В данном примере метод doOpenDocument является шаблонным методом.
 
-
Вывод:
 
-
<source lang="bash">Open simple document
 
-
Open XML document
 
-
Open TXT document</source>
 
-
 
== Высокое зацепление (High Cohesion) ==
== Высокое зацепление (High Cohesion) ==
== Контроллер (Controller) ==
== Контроллер (Controller) ==

Пожалуйста, обратите внимание, что все ваши добавления могут быть отредактированы или удалены другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. Wiki.crossplatform.ru:Авторское право). НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!