Интернет магазин китайских планшетных компьютеров |
|
Компьютеры - GRASP29 мая 2011GRASP паттерны, используемые в объектно-ориентированном проектировании для решения общих задач по назначению обязанностей классам и объектам. В книге Крейга Лармана «Применение UML и шаблонов проектирования» описано 9 таких образцов. Каждый из них помогает решить некоторую проблему, возникающую при объектно-ориентированном анализе, и которая возникает практически в любом проекте по разработке программного обеспечения. Таким образом, GRASP-паттерны это хорошо документированные, стандартизированные и проверенные временем принципы объектно-ориентированного анализа, а не попытка привнести что-то принципиально новое. Каталог паттерновНиже следует краткая характеристика девяти известных паттернов. Information ExpertШаблон Information Expert определяет базовый принцип назначения обязанностей. Он утверждает, что обязанности должны быть назначены объекту, который владеет максимумом необходимой информации для выполнения обязанности. Такой объект называется информационным экспертом. Возможно, этот шаблон является самым очевидным из девяти, но вместе с тем и самым важным. Если дизайн не удовлетворяет этому принципу, то при программировании получается спагетти-код, в котором очень трудно разбираться. Локализация обязанностей позволяет повысить уровень инкапсуляции и уменьшить уровень связанности. Кроме читабельности кода повышается уровень готовности компонент к повторному использованию. CreatorПаттерн Creator решает, кто должен создавать объект. Фактически, это применение шаблона Information Expert к проблеме создания объектов. Более конкретно, нужно назначить классу B обязанность создавать экземпляры класса A, если выполняется как можно больше из следующих условий:
Альтернативой создателю является образец Фабрика. В этом случае создание объектов концентрируется в отдельном классе. ControllerКонтроллер берёт на себя ответственность за выполнение операций, приходящих от пользователя и часто выполняет сценарий одного или нескольких вариантов использования. Как правило, контроллер не выполняет работу самостоятельно, а делегирует обязанности компетентным объектам. Иногда класс-контроллер представляет всю систему в целом, корневой объект, устройство или важную подсистему. Low Couplingэто принцип, который позволяет распределить обязанности между объектами таким образом, чтобы степень связанности между системами оставалась низкой. Степень связанности это мера, определяющая, насколько жестко один элемент связан с другими элементами, либо каким количеством данных о других элементах он обладает. Элемент с низкой степенью связанности зависит от не очень большого числа других элементов и имеет следующие свойства:
High CohesionHigh Cohesion это принцип, который задаёт свойство сильного зацепления внутри подсистемы. Классы таким образом получаются сфокусированными, управляемыми и понятными. Зацепление это мера связанности и сфокусированности обязанностей класса. Считается что объект обладает высокой степенью зацепления, если его обязанности тесно связаны между собой и он не выполняет огромных объемов работы. Класс с низкой степенью зацепления выполняет много разнородных функций или несвязанных между собой обязанностей. Такие классы создавать нежелательно, поскольку они приводят к возникновению следующих проблем:
Классы со слабым зацеплением, как правило, являются слишком «абстрактными» или выполняют обязанности, которые можно легко распределить между другими объектами. Например, класс с минимальным ветвлением без обращения к внешним модулям и источникам данных является сильно связанным. PolymorphismПолиморфизм позволяет обрабатывать альтернативные варианты поведения на основе типа и заменять подключаемые компоненты системы. Обязанности распределяются для различных вариантов поведения с помощью полиморфных операций для этого класса. Все альтернативные реализации приводятся к общему интерфейсу. Пример: Интеграция разрабатываемой системы с различными внешними системами учета налогов. Используются локальные программные объекты, обеспечивающие адаптацию, при отправке сообщения к такому объекту выполняется обращение к внешней системе с использованием ее собственного программного интерфейса. Использование полиморфизма здесь оправдано для возможной адаптации к различным внешним системам. Pure FabricationЧистая выдумка это класс, не отражающий никакого реального объекта предметной области, но специально придуманный для усиления зацепления, ослабления связанности или увеличения степени повторного использования. Pure Fabrication отражает концепцию сервисов в модели Программирование от предметной области. IndirectionIndirection поддерживает слабую связанность путём назначения обязанностей посредника между ними промежуточному объекту. Пример: Model-View-Controller, который позволяет ослабить связь между данными и их представлением с помощью введения класса-посредника, отвечающего за поведение. Protected VariationsОбразец Protected Variations защищает элементы от изменения других элементов с помощью вынесения взаимодействия в фиксированный интерфейс. Всё взаимодействие между элементами должно происходить через него. Поведение может варьироваться лишь с помощью создания другой реализации интерфейса. Просмотров: 4246
|