Студопедия
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Паттерн State

Читайте также:
  1. Altai State Technological University.
  2. Analysis for this excerpt: There are idioms in this sentence. «State pair» – in this sentence means favorite glasses, which aunt Polly used to wear only when she went out.
  3. BACKGROUND INFORMATION ON THE UNITED STATES OF AMERICA.
  4. Britain, Europe and the United States
  5. CHAPTER 66 Armed With Sword, Yale-Perez Goes To A Feast Alone; For The State, Empress Finch Offers Her Life.
  6. CHAPTER 69 McGregor-Durkee Sees Things In The Book Of Changes; Five Loyal Subjects Die For Their State.
  7. Characterize the attitude of the British to sport. Complete the given passage, making use of the following word combinations from the box. Extend the statements.
  8. Christianity: the partnership of Church and state
  9. Chronic carrier state
  10. Church and state

void TCPClosed::PassiveOpen (TCPConnection* t) { ChangeState(t, TCPListen::Instance)));


void TCPEstablished::Close (TCPConnection* t) { // послать FIN, получить АСК для FIN

ChangeStateft, TCPListen::Instance)));

void TCPEstablished::Transmit (

TCPConnection* t, TCPOctetStream* о

) {

t->ProcessOctet(o);

void TCPListen::Send (TCPConnection* t) {

// послать SYN, получить SYN, АСК и т.д.

ChangeStateft, TCPEstablished::Instanced); }

После выполнения специфичных для своего состояния действий эти операции вызывают ChangeState для изменения состояния объекта TCPConnection. У него нет никакой информации о протоколе TCP. Именно подклассы TCPState опреде­ляют переходы между состояниями и действия, диктуемые протоколом.

Известные применения

Ральф Джонсон и Джонатан Цвейг [JZ91] характеризуют паттерн состояние и описывают его применительно к протоколу TCP.

Наиболее популярные интерактивные программы рисования предоставляют «инструменты» для выполнения операций прямым манипулированием. Напри­мер, инструмент для рисования линий позволяет пользователю щелкнуть в про­извольной точке мышью, а затем, перемещая мышь, провести из этой точки ли­нию. Инструмент для выбора позволяет выбирать некоторые фигуры. Обычно все имеющиеся инструменты размещаются в палитре. Работа пользователя заключа­ется в том, чтобы выбрать и применить инструмент, но на самом деле поведение редактора варьируется при смене инструмента: посредством инструмента для рисо­вания мы создаем фигуры, при помощи инструмента выбора - выбираем их и т.д. Чтобы отразить зависимость поведения редактора от текущего инструмента, мож­но воспользоваться паттерном состояние.

Можно определить абстрактный класс Tool, подклассы которого реализуют зависящее от инструмента поведение. Графический редактор хранит ссылку на текущий объект Tool и делегирует ему поступающие запросы. При выборе инстру­мента редактор использует другой объект, что приводит к изменению поведения.

Данная техника используется в каркасах графических редакторов HotDraw [Joh92] и Unidraw [VL90]. Она позволяет клиентам легко определять новые виды


Паттерны поведения

 

инструментов. В HotDraw класс DrawingController переадресует запросы текущему объекту Tool. В Unidraw соответствующие классы называются Viewer и Tool. На приведенной ниже диаграмме классов схематично представлены ин­терфейсы классов Tool и DrawingController.

Описанный Джеймсом Коплиеном [Сор92] прием конверт-письмо (Envelope-Letter) также относится к паттерну состояние. Техника конверт-письмо - это способ изменить класс объекта во время выполнения. Паттерн состояние являет­ся частным случаем, в нем акцент делается на работу с объектами, поведение кото­рых зависит от состояния.

Родственные паттерны

Паттерн приспособленец подсказывает, как и когда можно разделять объек­ты класса State.

Объекты класса state часто бывают одиночками.




Дата добавления: 2015-09-11; просмотров: 97 | Поможем написать вашу работу | Нарушение авторских прав

Участники | Паттерны поведения | Пример кода | Паттерн Memento | Паттерн Observer | Реализация | Гдд Паттерны поведения | Паттерн Observer | Паттерн Observer | Паттерн State |


lektsii.net - Лекции.Нет - 2014-2025 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав