Наблюдател на шаблони за проектиране
Днес ще разгледаме друг модел на поведенчески дизайн, наречен Наблюдател. Целият въпрос е, че един обект наблюдава дейността на друг и действа в зависимост от него.
Този подход трябва да се използва, ако няколко обекта се характеризират с връзка "един към много" и поведението на първия зависи от поведението на втория.
Ето какво ни казва Wikipedia за този модел на проектиране:
Наблюдателят е модел на поведенчески дизайн. Известни още като „подчинени“ (Dependents), „издател-абонат“ (Publisher-Subscriber). Създава механизъм за клас, който позволява на екземпляр на обект от този клас да получава известия от други обекти за промени в тяхното състояние, като по този начин ги наблюдава.
За да разберем по-добре този модел на проектиране, нека да разгледаме пример от реалния живот, а именно показването на валути в зависимост от щатския долар.
Първо, нека дефинираме клас симулатор (който ще действа като наблюдател).
- Наблюдателят трябва да може да добавя валути в неограничени количества.
- Наблюдателят трябва да поддържа връзка с добавените валути.
- Наблюдателят трябва да може да показва състоянието/отношението на всяка регистрирана валута.
Нека внедрим нашия наблюдател:
Ако разглобите предишния код, тогава ще видите съответствието и с трите точки, които бяха изброени от нас по-рано.
Нашият наблюдател е готов. Сега имаме нужда от валутен клас.
Сега сме готови да сглобим всичко.
Сглобяване на целия код
В този пример можете да видите, че актуализираме цената на всички регистрирани валути. Сега ще покажем как да добавите нова валута сминимално добавяне на код.
Трябва да създадем клас и модифицирането на текущия код ще се сведе до просто регистриране на нова валута.
Нека добавим нова валута.
Нов валутен клас
Беше лесно. Сега нека разгледаме актуализирания пример!
В ООП състоянието на всеки обект е много важно, защото действията трябва да имат последствия: промените в състоянието на някои обекти влияят на състоянието на други. В тези случаи трябва да използвате шаблона за проектиране 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 пясъчници. На някои можете да тествате кода си онлайн, но има и решения, които можете да приложите сами.уебсайт.