Итератор
Итераторът е модел на поведенчески дизайн. Представлява обект, който позволява последователен достъп до елементите на обобщен обект, без да се използват описания на всеки от обобщените обекти.
Например, елементи като дърво, свързан списък, хеш table и масив могат да бъдат обхождани (и модифицирани) с помощта на обект Iterator.
Итерирането през елементите се извършва от обекта на итератора, а не от самата колекция. Това опростява интерфейса и изпълнението на колекцията и насърчава по-логичното разделяне на проблемите.
Характеристика на напълно внедрен итератор е, че codeът, който използва итератора, може да не знае нищо за типа на итерирания агрегат.
Този подход се използва много често. Например изпращате SQL заявка към базата данни и в отговор тя ви връща итератор (в термините на SQL той обикновено се нарича курсор). И с помощта на получения итератор можете да вземете редове от SQL отговора един по един.
команда
Командата е модел на поведенчески дизайн, използван в обектно-ориентираното програмиране, който представлява действие. Командният обект съдържа самото действие и неговите параметри.
За да извикате метод, обикновено се нуждаете от:
- препратка към обект
- име на метод (препратка към метод)
- стойности на параметрите на метода
- препратка към контекста, който съдържа използваните обекти
Всички тези данни трябва да бъдат опаковани в един обект - Команда ( команда ).
Но това не е всичко: все пак някой трябва да изпълни командата. Така че този модел включва още четири обекта: команди ( command ), получател на команда ( receiver ), извикващ команда ( invoker ) и клиент ( client ).
Предметкомандазнае за приемника и извиква метода на приемника. Стойностите на параметрите на приемника се съхраняват в командата. Повикващият (извикващият) знае How да изпълни командата и евентуално следи изпълнените команди. Повикващият (извикващият) не знае нищо за конкретна команда, той знае само за интерфейса.
И двата обекта (извикващият обект и няколко командни обекта) принадлежат на клиентския обект. Клиентът решава кои команди да изпълни и кога. За да изпълни команда, тя предава командния обект на извикващия (извикващия).
Използването на командни обекти улеснява изграждането на споделени компоненти, които трябва да делегирате or да правите извиквания на метод по всяко време, без да е необходимо да знаете методите на класа or параметрите на метода.
Използването на извикващия обект (invoker) ви позволява да поддържате запис на изпълнените команди, без да е необходимо клиентът да знае за този модел на отчитане (такова отчитане може да бъде полезно, например, за прилагане на команда отмяна и повторение).
Например, вие пишете програма, която ви позволява да изпълнявате различни задачи по график. От една страна, вашата програма следи задачите и управлява тяхното стартиране, от друга страна, тя може да има няколко изпълнители, всеки от които може да изпълнява команди от свой тип. Например изпращане на SMS, изпращане на писма, изпращане на съобщения до Telegram и т.н.
Наблюдател
Наблюдателят е модел на поведенчески дизайн. Реализира механизъм на клас, който позволява на обект от този клас да получава известия за промени в състоянието на други обекти и по този начин да ги наблюдава.
Класовете, за които се абонират други класове, се наричат Субекти , а абониращите се класове се наричат Наблюдатели .
При прилагането на модела Observer обикновено се използват следните класове:
- Observable – интерфейс, който дефинира методи за добавяне, премахване и уведомяване на наблюдатели;
- Наблюдател – интерфейсът, през който наблюдателят получава известието;
- ConcreteObservable е конкретен клас, който имплементира интерфейса Observable ;
- ConcreteObserver е конкретен клас, който имплементира интерфейса Observer .
Моделът Observer се използва, когато системата:
- има поне един обект, който изпраща съобщения;
- има поне един получател на съобщения, като техният брой и състав могат да се променят, докато приложението работи;
- избягва силното свързване на взаимодействащи класове.
Този модел често се използва в ситуации, в които подателят на съобщения не се интересува Howво правят получателите с предоставената им информация.
Посетител
Посетителят е поведенчески модел на проектиране, който описва операция, която се извършва върху обекти от други класове. Когато посещавате or се променяте, няма нужда да променяте обслужваните класове.
Шаблонът демонстрира класическата техника за възстановяване на изгубена тип информация, без да се прибягва до двойно изпращане надолу.
Трябва да извършите някои несвързани операции върху редица обекти, но трябва да избягвате замърсяването на техния code. И няма начин or желание да се направи заявка за типа на всеки възел и да се прехвърли указателят към правилния тип, преди да се извърши желаната операция.
Шаблонът трябва да се използва, ако:
- има различни обекти от различни класове с различни интерфейси, но върху тях трябва да се извършват операции, които зависят от конкретни класове;
- върху конструкцията е необходимо да се извършват различни операции, усложняващи структурата;
- често се добавят нови операции върху структурата.
посредник
Медиаторът е модел на поведенчески дизайн, който позволява на множество обекти да си взаимодействат, като същевременно поддържа хлабаво свързване и избягва необходимостта обектите изрично да се отнасят един към друг.
Моделът Mediator ви позволява да осигурите взаимодействието на много обекти, като същевременно образувате хлабаво свързване и елиминирате необходимостта обектите изрично да се отнасят един към друг.
Медиаторът дефинира интерфейс за обмен на информация с обектиКолеги, Конкретен посредник координира действията на обектитеКолеги.
Всеки колега клас знае за своя обектПосредник, всички Колеги обменят информация само с посредник, в негово отсъствие ще трябва да обменят информация директно.
Колегиизпращайте заявки до дистрибутора/span> и получавате заявки от него. Медиаторът прилага кооперативно поведение, като препраща всяка заявка на един or повечеКолеги.
GO TO FULL VERSION