2013-04-06 2 views

ответ

3

В книге gof клиент - это код или класс, который использует классы в шаблоне.

, например, от абстрактной модели фабрики под мотивацией:

diagram with client

Рассмотрим интерфейс инструментарий пользователя, который поддерживает несколько стандартов выглядеть и чувствовать, такие как Motif и Presentation Manager. Различные взгляды и ощущения определяют различные проявления и поведение пользовательских интерфейсов «виджеты», такие как полосы прокрутки, окна и кнопки. Чтобы быть переносимым по стандартам look-and-feel, приложение не должно жестко программировать свои виджеты для конкретного вида и восприятия. Создание экземпляров виджетов для виджетов по всему приложению затрудняет изменение внешнего вида.

Мы можем решить эту проблему, указав абстрактный класс WidgetFactory, который объявляет интерфейс для создания каждого базового вида виджетов. Существует также абстрактный класс для каждого вида виджета, а конкретные подклассы реализуют виджеты для конкретных стандартов оформления. Интерфейс WidgetFactory имеет операцию, которая возвращает новый объект виджетов для каждого абстрактного класса виджетов. Клиенты называют эти операции для получения экземпляров виджета, но клиенты не знают о конкретных классах, которые они используют. Таким образом, клиенты остаются независимыми от преобладающего внешнего вида.

Для каждого стандартного стиля выглядит конкретный подкласс WidgetFactory. Каждый подкласс реализует операции для создания соответствующего виджета для внешнего вида. Например, операция CreateScrollBar в MotifWidgetFactory создает экземпляр и возвращает полосу прокрутки Motif, в то время как соответствующая операция в PMWidgetFactory возвращает полосу прокрутки для Presentation Manager. Клиенты создают виджеты исключительно через интерфейс WidgetFactory и не имеют знаний о классах, реализующих виджеты для определенного внешнего вида. Другими словами, клиенты должны выполнять только интерфейс, определенный абстрактным классом, а не конкретным конкретным классом.

WidgetFactory также обеспечивает зависимость между конкретными классами виджетов. Полоса прокрутки Motif должна использоваться с кнопкой Motif и текстовым редактором Motif, и это ограничение принудительно выполняется автоматически в результате использования MotifWidgetFactory.

+0

Можете ли вы пример с шаблоном наблюдателя –

+0

Я добавил пример из абстрактного шаблона фабрики. –

+0

Большое спасибо. Я прочитал его в шаблоне проектирования GoF: элементы многоразового объектно-ориентированного программного обеспечения. –

2

В качестве шаблона клиент является актером, который инициирует взаимодействие с сервером , который является функциональным, но, как правило, пассивным, актером. Действуя от имени клиента, как описано в запросе , сервер выполняет какое-либо действие и возвращает отчет в виде ответа .

Таким образом, точка клиентского интерфейса должна сделать его удобным или возможным для произвольного кода, чтобы сформулировать запрос и привлечь внимание сервера. Поскольку сообщение запроса может передаваться по широкому спектру носителей (например, в другом пространстве памяти), обычно используется прозрачный транспорт, скрытый за этим интерфейсом запросов.

Это в значительной степени длинный и короткий от него как концепция. Одним из недостатков очень гибкого шаблона (который, безусловно, относится к клиенту/серверу) является необходимость спускаться в конкретный пример, структуру или библиотеку, чтобы говорить конкретно.

+0

Благодарим за ваш быстрый вопрос, но, возможно, я до сих пор не могу понять это в шаблон проектирования программного обеспечения ООП. –

0

Клиент просто еще один модуль, или класс, образуют систему использовать конкретный шаблон (все или часть компонентов формируют структуру)

 Смежные вопросы

  • Нет связанных вопросов^_^