Паттерн Спостерігач (Observer) в PHP

enObserver pattern in PHP

ruПаттерн Наблюдатель (Observer) в PHP

uaПаттерн Спостерігач (Observer) в PHP

Зовсім недавно я просто закохався в шаблон проектування observer. Ви можете з легкістю побудувати повний додаток, використовуючи неймовірну міць програмування управлінь подіями. Що саме представляє з себе паттерн спостерігач? Вся теорія доступна на Вікіпедії. Говорячи простою мовою, у нас є об'єкт, за яким ми хочемо моніторити (спостерігати) на предмет якихось змін. Більшість часу цей об'єкт просто звільняє події і ми хочемо прослуховувати їх. Ми можемо мати багато об'єктів прослуховуючих один або багато інших об'єктів, простіше кажучи, це може бути відносини багато до багатьох. Класичний приклад у світі баз даних це тригери. Наприклад, коли таблиця була оновлена, тригер, що прослуховує, звільняється. У віконних додатках, коли користувач натискає на кнопку, події звільняються і ті що прослуховують повідомляються для керування подією. У наступному прикладі ми маємо об'єкт валідатору, який перевіряє валідність e-mail адреси, звільняються два типи подій, які б ми хотіли прослуховувати. Ці типи, ясна річ, дійсний / не дійсний e-mail адресу. Ми також оголосимо двох слухачів, по одному на кожний з типів подій, слухаючих валідатор. Перший буде просто деяким логгером помилок, записувати невірні спроби введення, і другий буде записувати коректний e-mail адрес в базу даних або інше місце. Ми почнемо з опису нашого інтерфейсу для об’єкту спостереження. Ми просто хочемо додати спостерігачів та звільнити події. Також ми хочемо мати можливість прослуховувати тільки певні типи подій, значить, у нас немає необхідності сповіщати спостерігачів не слухати подію, яка тільки що звільнилася.

( Читати далі )

Паттерн кешування для моделей

enA caching pattern for models

ruПаттерн кэширования для моделей

uaПаттерн кешування для моделей

Це паттерн для моделей, які використовують Zend_Cache і магічний метод __call.

Проста ідея
Ідея в тому, що модель повинна мати можливість повертати не кешовані або кешовані виклики, без постійної ініціалізації певного об'єкту. Повинно відбуватися легке переключення між двома викликами, і кеш повинен приходити вже з моделлю об'єкта.

( Читати далі )
  • +4
  • 02 червня 2009, 18:38
  • HeeL
  • 3