Шаблон проектування "стратегія" (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, який поверне нам наш файл в потрібному форматі. Тобто суть його в тому, що ми не знаємо, який об`єкт у нас буде, за нас це перевіряє наш клас і повертає потрібний.
Отже, сьогодні ми розібрали ще один дуже часто використовуваний шаблон проектування "стратегія".
- Витяг файлів з архівів формату .cab в операційних системах windows.
- Що нового в php7.1: поліпшення обробки $ this.
- Як зашифрувати jаvascript
- Як приховати url викачуваного файлу на php
- Що нового в php7.1: ключове слово void.
- Відправлення файлу по e-mail на php
- Nodejs. Шаблони модулів.
- Шаблон проектування адаптер. Pattern adapter.
- Створення движка на mvc. Робимо можливість редагування і видалення користувачів.
- Серіалізация об`єктів в php.
- Вивчаємо coffeescript. Функції.
- Модифікатори доступу в php
- Статичні властивості і методи в php
- Клас для роботи з базою даних
- Шаблон проектування "одинак" (pattern singleton).
- Ооп проти процедурного підходу.
- Анонімні, або лямбда-функції в php.
- Створюємо сокращатель url. Частина 2.
- Шаблон проектування фасад. Pattern facade.
- Whois і php
- Створення движка на mvc. Створюємо авторизацію.