Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
конспект_укр.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.07 Mб
Скачать

Опис патерну Strategy

Патерн Strategy переносить в окрему ієрархію класів всі деталі, пов'язані з реалізацією алгоритмів. Для випадку програми стиснення файлів абстрактний базовий клас Compression цій ієрархії оголошує інтерфейс, загальний для всіх алгоритмів і використовуваний класом Compressor. Підкласи ZIP_Compression, ARJ_Compression і RAR_Compression його реалізують у відповідності з тим чи іншим алгоритмом. Клас Compressor містить покажчик на об'єкт абстрактного типу Compression і призначений для переадресації користувача запитів конкретного алгоритму. Для заміни одного алгоритму іншим достатньо переналаштувати цей покажчик на об'єкт потрібного типу.

UML-діаграма класів. Програма стиснення файлів. Використання патерну Strategy

Структура патерну Strategy

UML-діаграма класів патерну Strategy

Реалізація патерну Strategy

Наведемо реалізацію програми для стиснення файлів, спроектованого із застосуванням патерну Strategy.

#include <iostream>

#include <string>

  

// Иерархия классов, определяющая алгоритмы сжатия файлов

class Compression

{

  public:   

    virtual ~Compression() {}

    virtual void compress( const string & file ) = 0;

};

  

class ZIP_Compression : public Compression

{

  public:

    void compress( const string & file ) {

        cout << "ZIP compression" << endl;

    }

};

  

class ARJ_Compression : public Compression

{

  public:

    void compress( const string & file ) {

        cout << "ARJ compression" << endl;

    }

};

  

class RAR_Compression : public Compression

{

  public:

    void compress( const string & file ) {

        cout << "RAR compression" << endl;

    }

};

  

  

// Класс для использования

class Compressor

{

  public:

    Compressor( Compression* comp): p(comp) {}

   ~Compressor() { delete p; }

    void compress( const string & file ) {

      p->compress( file);

    }

  private:

    Compression* p;

};

  

  

int main()

{

  Compressor* p = new Compressor( new ZIP_Compression);

  p->compress( "file.txt");

  delete p;

  return 0;

}

Результати застосування патерну Strategy

Переваги патерну Strategy

Систему простіше підтримувати і модифікувати, так як сімейство алгоритмів перенесено в окрему ієрархію класів.

Патерн Strategy надає можливість заміни одного алгоритму іншим у процесі виконання програми.

Патерн Strategy дозволяє приховати деталі реалізації алгоритмів від клієнта.

Недоліки патерну Strategy

Для правильного налаштування системи користувач повинен знати про особливості всіх алгоритмів.

Число класів у системі, побудованої із застосуванням патерну Strategy, зростає.

Питання для самонтролю:

  1. Призначення патерну Strategy.

  2. UML діаграма реалізації патерну.

  3. Покроковий алгоритм реалізації патерну Strategy.

  4. Приклад реалізації патерну.

  5. Переваги та недоліки використання патерну.

Практичне заняття №23

Тема: Factory Method, його призначення та реалізація у програмах.

Мета: Вивчення патерну Factory Method. Навчитися використовувати зазаначений патерн при розробці власних програм.

Перелік питань, що розглядаються на лекції:

  1. Призначення патерна Factory Method

  2. Опис патерну Factory Method

  3. UML діаграма класів патерну Factory Method.

  4. Реалізація патерну

  5. Переваги та недоліки використання патерну.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]