Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Термины и определения_Дополнено_200902.doc
Скачиваний:
4
Добавлен:
21.11.2019
Размер:
526 Кб
Скачать
☆

Как выбирать паттерн проектирования

Если в распоряжение проектировщика предоставлен каталог из более чем 20 паттернов, трудно решать, какой паттерн лучше всего подходит для решения конкретной задачи проектирования. Ниже представлены разные подходы к выбору подходящего паттерна:

  • подумайте, как паттерны решают проблемы проектирования. В разделе 1.6 обсуждается то, как с помощью паттернов можно найти подходящие объекты, определить нужную степень их детализации, специфицировать их интерфейсы. Здесь же говорится и о некоторых иных подходах к решению задач с помощью паттернов;

  • пролистайте разделы каталога, описывающие назначение паттернов. В разделе 1.4,перечислены назначения всех представленных паттернов. Ознакомьтесь с целью каждого паттерна, когда будете искать тот, что в наибольшей степени относится к вашей проблеме. Чтобы сузить поиск, воспользуйтесь схемой в таблице 1.1;

  • изучите взаимосвязи паттернов. На рис. 1.1 графически изображены соотношения между различными паттернами проектирования. Данная информация поможет вам найти нужный паттерн или группы паттернов;

  • проанализируйте паттерны со сходными целями. Каталог состоит из трех частей: порождающие паттерны, структурные паттерны и паттерны поведения. Каждая часть начинается со вступительных замечаний о паттернах соответствующего вида и заканчивается разделом, где они сравниваются друг с другом;

  • разберитесь в причинах, вызывающих перепроектирование. Взгляните на перечень причин, приведенный выше. Быть может, в нем упомянута ваша проблема? Затем обратитесь к изучению паттернов, помогающих устранить эту причину;

  • посмотрите, что в вашем дизайне должно быть изменяющимся. Такой подход противоположен исследованию причин, вызвавших необходимость перепроектирования. Вместо этого подумайте, что могло бы заставить изменить дизайн, а также о том, что бы вы хотели изменять без перепроектирования. Акцент здесь делается на инкапсуляции сущностей, подверженных изменениям, а это предмет многих паттернов. В таблице 1.2 перечислены те аспекты дизайна, которые разные паттерны позволяют варьировать независимо, устраняя тем самым необходимость в перепроектировании.

Как пользоваться паттерном проектирования

Как пользоваться паттерном проектирования, который вы выбрали для изучения и работы? Вот перечень шагов, которые помогут вам эффективно применить паттерн:

  • Прочитайте описание паттерна, чтобы получить о нем общее представление. Особое внимание обратите на разделы «Применимость» и «Результаты» - убедитесь, что выбранный вами паттерн действительно подходит для решения ваших задач.

  • Вернитесь назад и изучите разделы «Структура», «Участники» и «Отношения». Убедитесь, что понимаете упоминаемые в паттерне классы и объекты и то, как они взаимодействуют друг с другом.

  • Посмотрите на раздел «Пример кода», где приведен конкретный пример использования паттерна в программе. Изучение кода поможет понять, как нужно реализовывать паттерн.

  • Выберите для участников паттерна подходящие имена. Имена участников паттерна обычно слишком абстрактны, чтобы употреблять их непосредственно в коде. Тем не менее бывает полезно включить имя участника как имя в программе. Это помогает сделать паттерн более очевидным при реализации. Например, если вы пользуетесь паттерном стратегия в алгоритме размещения текста, то классы могли бы называться SimpleLayoutStrategy или TeXLayoutStrategy.

  • Определите классы. Объявите их интерфейсы, установите отношения наследования и определите переменные экземпляра, которыми будут представлены данные объекты и ссылки на другие объекты. Выявите имеющиеся в вашем приложении классы, на которые паттерн оказывает влияние, и соответствующим образом модифицируйте их.

  • Определите имена операций, встречающихся в паттерне. Здесь, как и в предыдущем случае, имена обычно зависят от приложения. Руководствуйтесь теми функциями и взаимодействиями, которые ассоциированы с каждой операцией. Кроме того, будьте последовательны при выборе имен. Например, для обозначения фабричного метода можно было бы всюду использовать префикс Create-.

  • Реализуйте операции, которые выполняют обязанности и отвечают за отношения, определенные в паттерне. Советы о том, как это лучше сделать, вы найдете в разделе «Реализация». Поможет и «Пример кода».

Все вышесказанное - обычные рекомендации. Со временем вы выработаете собственный подход к работе с паттернами проектирования.

Таблица 1.2. Изменяемые паттернами элементы дизайна

Никакое обсуждение того, как пользоваться паттернами проектирования, нельзя считать полным, если не сказать о том, как не надо их применять. Нередко за гибкость и простоту изменения, которые дают паттерны, приходится платить усложнением дизайна и ухудшением производительности. Паттерн проектирования стоит применять, только когда дополнительная гибкость действительно необходима. Для оценки достоинств и недостатков паттерна большую помощь могут оказать разделы каталога «Результаты».

__

13