Шаблон проектування "стратегія" (pattern strategy).

Відео: Шаблони Java. Стратегія (Strategy)

шаблон проектування

Відео: Поведінкові шаблони - Strategy. курс "шаблони проектування"

Продовжуємо говорити про патерни проектування і сьогодні ми розглянемо шаблон проектування "стратегія" (pattern strategy).




Суть даного шаблону проста - в залежності від якихось умов вибрати потрібну тактику. Краще розглянути на практиці.

lt ;?php
abstractclassFileNamingStrategy{
abstractfunction createLinkName($ fileName) -
}
classZipFileextendsFileNamingStrategy{
function createLinkName($ fileName){
return"Http: //localhost/download/$fileName.zip"-
}
}
classTarGzFileextendsFileNamingStrategy{
function createLinkName($ fileName){
return"Http: //localhost/download/$fileName.tar.gz"-
}
}
classFileStrategy{
protected $ _type-
function __construct(){
if(strstr($ _SERVER["HTTP_USER_AGENT"],"Win"))
$ this
-gt;_type =newZipFile() -
else
$ this
-gt;_type =newTarGzFile() -
}
publicfunction getLink($ name){
return $ this-gt;_type-gt;createLinkName($ name) -
}}
$ obj
=newFileStrategy() -
$ link1
= $ obj-gt;getLink("File_one") -
$ link2
= $ obj-gt;getLink("File_two") -

printlt; lt; lt;LIST
перелікфайлівдляскачування:h1gt;

lt;a href="$ Link1"gt; Першийфайлagt;
lt;a href="$ Link2"gt; Другийфайлagt;
pgt;
LIST
-
?gt;



Отже, у нас є 2 класу: ZipFile і TarGzFile. Перший повертає нам посилання на скачування файлу в .zip форматі, а другий в .tar.gz форматі. В класі FileStrategy, в конструкторі, ми перевіряємо заголовок USER_AGENT і, якщо там присутні букви Win, то створюємо об`єкт класу ZipFile, інакше ж створюємо об`єкт класу TarGzFile. Потім ми створюємо об`єкт FileStrategy і викликаємо метод getLink, який поверне нам наш файл в потрібному форматі. Тобто суть його в тому, що ми не знаємо, який об`єкт у нас буде, за нас це перевіряє наш клас і повертає потрібний.

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

Поділися в соціальних мережах:

Схожі
Модифікатори доступу в phpМодифікатори доступу в php
Ооп проти процедурного підходу.Ооп проти процедурного підходу.
Що нового в php7.1: ключове слово void.Що нового в php7.1: ключове слово void.
Як зашифрувати jаvascriptЯк зашифрувати jаvascript
Що нового в php7.1: поліпшення обробки $ this.Що нового в php7.1: поліпшення обробки $ this.
Витяг файлів з архівів формату .cab в операційних системах windows.Витяг файлів з архівів формату .cab в операційних системах windows.
Серіалізация об`єктів в php.Серіалізация об`єктів в php.
Nodejs. Шаблони модулів.Nodejs. Шаблони модулів.
Клас для роботи з базою данихКлас для роботи з базою даних
Шаблон проектування адаптер. Pattern adapter.Шаблон проектування адаптер. Pattern adapter.
» » Шаблон проектування "стратегія" (pattern strategy).