WikiDer > Цель – действие
Период, термин цель – действие парадигма дизайна относится к разновидности программная архитектура, где компьютерная программа поделен на объекты которые динамически устанавливают отношения, сообщая друг другу, на какой объект они должны нацеливаться и какое действие или сообщение отправить этой цели при возникновении события. Это особенно полезно при реализации графический пользовательский интерфейс, которые по своей природе событийный.
Преимущества
Подход «цель – действие» к системам, управляемым событиями, обеспечивает гораздо больший динамизм по сравнению с другими, более статичными подходами, такими как подклассы. Это связано с тем, что создание подклассов является относительно жестким способом программирования: программист должен изложить внутреннюю логику взаимосвязи программы во время разработки, и это не может быть изменено позже, если программа не будет остановлена, перепроектирована и перестроена. С другой стороны, программирование на основе целевых действий может полностью изменить их при время выполнения, что позволяет программе самостоятельно создавать новые взаимоотношения и новое поведение.
Ярким примером этого подхода является OpenStep API, что отчасти благодаря динамическому Цель-C язык, большая часть графического пользовательского интерфейса реализована с использованием парадигмы целевого действия. Рассмотрим следующий пример, написанный на Objective-C:
[button setTarget: self]; [button setAction: @selector (doSomething)];
Теперь, когда кнопка идентифицированный кнопка Переменная нажата, исполняющая система попытается отправить сообщение с именем сделай что-нибудь объекту, в котором был вызван этот код. Также очень хорошо можно определить сообщение, которое будет отправлено во время выполнения:
[setTarget кнопки: self]; [действие кнопки setAction: NSSelectorFromString ([textField stringValue])];
Здесь сообщение, которое должно быть отправлено, определяется путем консультации с текстовое полестроковое значение (строка текста, которую пользователь ввел в текстовое поле). Эта строка впоследствии преобразуется в сообщение (с использованием NSSelectorFromString функция) и передается кнопке как ее действие. Это возможно, потому что в Objective-C методы представлены селектор, простая строка, описывающая вызываемый метод. Когда сообщение отправлено, селектор отправляется в среду выполнения ObjC, сопоставляется со списком доступных методов, и вызывается реализация метода. Реализация метода рассматривается во время выполнения, а не во время компиляции.
Недостатки
Из-за чрезвычайного динамизма и свободы поведения, предоставляемого программам, разработанным с использованием парадигмы целевого действия, может случиться так, что разработчик программы неправильно реализует часть логики взаимосвязи, и это может иногда приводить к трудностям для отслеживания ошибок. Это связано с отсутствием время компиляции контроль обеспечивается компилятор который не может видеть взаимосвязи. Таким образом, контроль согласованности межсоединений полностью оставлен на усмотрение программиста.
Результат неправильно подключенной привязки целевого действия может отличаться в зависимости от того, как конкретная система, в которой реализована программа, относится к этому:
- он может игнорировать условие и ничего не выполнять (например, в примере с кнопкой выше - если цель кнопки не отвечает на сообщение о действии, нажатие кнопки просто ничего не делает)
- он может рассматривать такое состояние как ошибка, и в этом случае это, скорее всего, приведет к крушение или вызвать время выполнения исключение
Смотрите также
- В OpenStep API
- Следующий шаг - операционная система от NeXT Software Inc. (сейчас Apple Inc.) в основном на основе OpenStep API
- GNUstep - бесплатная реализация OpenStep API
- Какао - API, производный от NeXTSTEP, используемый на Mac OS X
- Цель-C