CodeGym/Java курс/Модул 3/Поведенчески модели, част 2

Поведенчески модели, част 2

На разположение

2.1 Състояние

Състоянието е модел на поведенчески дизайн. Използва се в случаите, когато по време на изпълнение на програмата обектът трябва да промени поведението си в зависимост от състоянието си.

състояние

Моделът се състои от 3 блока:

Контекстът е клас, чиито обекти трябва да променят поведението си в зависимост от състоянието.

Състоянието е интерфейсът, който всяко от конкретните състояния трябва да реализира. Чрез този интерфейс обектът Context взаимодейства със състоянието, като му делегира извиквания на метод. Интерфейсът трябва да съдържа средства за обратна връзка към обекта, чието поведение трябва да се промени.

За това се използва събитие (модел Издател - Абонат). Това е необходимо, за да се замени обектът състояние по време на изпълнение на програмата, когато възникнат събития. Възможно е да има случаи, когато самият контекст периодично проверява обекта на състоянието за преход.

ConcreteState1, ConcreteState2 - класове конкретни състояния. Трябва да съдържа информация за това при Howви условия и в Howви състояния обектът може да премине от текущото състояние. Например от ConcreteState1 един обект може да премине към ConcreteState2 и ConcreteState3, а от ConcreteState2 обратно към ConcreteState1 и т.н. Обектът на един от тях трябва да съдържа контекста, когато е създаден.

Например, вие пишете игра, в която герой може да тича, плува и лети. Ако вашият герой влезе във водата, тогава е разумно да ограничите поведението му във водата: сега той не може да стреля, но все още има някои действия: плуване напред, надясно, наляво и т.н.

Състоянието на вашия герой може да бъде описано от State обект, който има методи, които могат да бъдат извикани и които ще направят нещо. И след като вашият герой влезе във водата, вие просто променяте препратката към друг обект на състояние вътре в него - и той променя състоянието си.

2.2 стратегия

Стратегията е модел на поведенчески дизайн за дефиниране на семейство от алгоритми, капсулиране на всеки от тях и пequalsето им взаимозаменяеми. Това ви позволява да изберете алгоритъм, като дефинирате подходящия клас.

Стратегическият шаблон ви позволява да промените избрания алгоритъм, независимо от клиентските обекти, които го използват.

Стратегия

Стратегическият модел ви позволява да използвате различни бизнес правила or алгоритми в зависимост от контекста. Използва се в случаите, когато трябва да се използват различни алгоритми на едно и също място в зависимост от текущото състояние на системата (or нейната среда).

Силни страни:

  • капсулиране на изпълнението на различни алгоритми, системата става независима от възможни промени в бизнес правилата;
  • извикване на всички алгоритми по един standardн начин;
  • без използване на ключове и/or условни изрази.

Този модел е донякъде подобен на модела State, но тук акцентът не е върху състоянието, а върху поведението. Да приемем, че герой във вашата игра може да сменя оръжията. След това, когато сменяте оръжия, можете просто да промените препратката към обекта, който описва How работи това оръжие.

2.3 Метод на шаблона

Метод на шаблона

Абстрактен клас (абстрактен клас) – дефинира абстрактните операции, които се заместват в наследниците за реализиране на стъпките на алгоритъма; имплементира шаблонен метод, който дефинира скелета на алгоритъма. Методът на шаблона извиква заменените и други операции, дефинирани в класа Abstract.

Конкретен клас (конкретен клас) - изпълнява заменените операции по необходимия за изпълнение начин. Класът Concrete предполага, че инвариантните стъпки на алгоритъма ще бъдат изпълнени в AbstractClass.

Този модел често се използва, когато е необходимо:

  • Еднократно използване на инвариантната част от алгоритъма, оставяйки променящата се част по преценка на наследниците.
  • Локализация и изолиране на code, общ за няколко класа, за да се избегне дублиране.
  • Позволете на наследниците да разширяват codeа само на определени места.

Да, този модел описва използването на двойка: абстрактен клас и неговата реализация.

2.4 Верига от отговорност

Веригата на отговорност е модел на поведенчески дизайн, предназначен да организира нивата на отговорност в системата.

Верига на отговорност

Шаблонът се препоръчва за използване в условия, при които:

  • в разработената система има група от обекти, които могат да обработват съобщения от определен тип;
  • всички съобщения трябва да бъдат обработени от поне един системен обект;
  • съобщенията в системата се обработват по схемата „обработете го сами or го предайте на друг“, т.е. някои съобщения се обработват на нивото, на което са получени, докато други се препращат към обекти от друго ниво.

2.5 Спомен

Keeper (Memento) е модел на поведенчески дизайн, който ви позволява да коригирате и запазите вътрешното състояние на обект, без да нарушавате капсулирането, така че да може да бъде възстановен до това състояние по-късно.

Пазител (Мементо)

Моделът Guardian се използва, когато:

  • необходимо е да се запази моментна снимка на състоянието на обекта (or част от него) за последващо възстановяване;
  • Директният интерфейс за получаване на състоянието на обект разкрива подробности за изпълнението и прекъсва капсулирането на обекта.
1
Задача
Модул 3,  нивоурок
Заключено
USB MP3 Player
task4118
1
Задача
Модул 3,  нивоурок
Заключено
Strategic shopping
task4119
1
Задача
Модул 3,  нивоурок
Заключено
Game of Life
task4120
1
Задача
Модул 3,  нивоурок
Заключено
Technical Support
task4121
1
Задача
Модул 3,  нивоурок
Заключено
Memento mori
task4122
Коментари
  • Популярен
  • Нов
  • Стар
Трябва да сте влезли, за да оставите коментар
Тази страница все още няма коментари