Наблюдател на шаблони за проектиране

Днес ще разгледаме друг модел на поведенчески дизайн, наречен Наблюдател. Целият въпрос е, че един обект наблюдава дейността на друг и действа в зависимост от него.

Този подход трябва да се използва, ако няколко обекта се характеризират с връзка "един към много" и поведението на първия зависи от поведението на втория.

Ето какво ни казва Wikipedia за този модел на проектиране:

Наблюдателят е модел на поведенчески дизайн. Известни още като „подчинени“ (Dependents), „издател-абонат“ (Publisher-Subscriber). Създава механизъм за клас, който позволява на екземпляр на обект от този клас да получава известия от други обекти за промени в тяхното състояние, като по този начин ги наблюдава.

За да разберем по-добре този модел на проектиране, нека да разгледаме пример от реалния живот, а именно показването на валути в зависимост от щатския долар.

Първо, нека дефинираме клас симулатор (който ще действа като наблюдател).

  1. Наблюдателят трябва да може да добавя валути в неограничени количества.
  2. Наблюдателят трябва да поддържа връзка с добавените валути.
  3. Наблюдателят трябва да може да показва състоянието/отношението на всяка регистрирана валута.

Нека внедрим нашия наблюдател:

Ако разглобите предишния код, тогава ще видите съответствието и с трите точки, които бяха изброени от нас по-рано.

Нашият наблюдател е готов. Сега имаме нужда от валутен клас.

Сега сме готови да сглобим всичко.

Сглобяване на целия код

В този пример можете да видите, че актуализираме цената на всички регистрирани валути. Сега ще покажем как да добавите нова валута сминимално добавяне на код.

Трябва да създадем клас и модифицирането на текущия код ще се сведе до просто регистриране на нова валута.

Нека добавим нова валута.

Нов валутен клас

Беше лесно. Сега нека разгледаме актуализирания пример!

В ООП състоянието на всеки обект е много важно, защото действията трябва да имат последствия: промените в състоянието на някои обекти влияят на състоянието на други. В тези случаи трябва да използвате шаблона за проектиране Observer.

Този урок е подготвен за вас от екипа на ruseller.com Източник на урока: http://code.tutsplus.com/tutorials/design-patterns-the-observer-pattern--cms-22975 Превод: Станислав Протасевич Урокът е създаден: 22 август 2015 г. Прегледан: 7038 Правила за препечатване

5 последни урока от рубриката "PHP"

Филтриране на данни с zend-filter

Когато става въпрос за сигурност на уебсайтове, фразата „филтрирай всичко, проверявай всичко“ винаги ще бъде актуална. Днес ще говорим за филтриране на данни.

Контекстуално избягване с zend-escaper

Свързване на Zend модули към Expressive

Expressive 2 поддържа възможността за свързване на други ZF компоненти по специален начин. Не всеки харесва това решение. В тази статия ще ви разкажем как подобрихме процеса на свързване на няколко модула.

Съвет: Подаване на информация към Google Analytics чрез API

Да предположим, че трябва да изпратите някаква информация до Google Analytics от сървърен скрипт. Как да го направим. Отговорът е в тази публикация.

Селекция от PHP пясъчници

Селекция от няколко типа PHP пясъчници. На някои можете да тествате кода си онлайн, но има и решения, които можете да приложите сами.уебсайт.