Каждая информационная система оперирует множеством различных информационных компонентов. Взаимодействуя, компоненты определяют сложность системы и ее значимость.Но сложность определяется не столько количеством взаимодействий между различными частями информационной системы, сколько количеством объектов, порождаемых системой в ходе активных фаз ее жизненного цикла. Любая современная "авторитетная" корпоративная информационная учетная система насчитывает и поддерживает не один миллион порожденных ею объектов. А на вопрос, как это делать с наименьшими потерями для ресурсов системы, отвечают порождающие шаблоны проектирования.
Порождающие шаблоны предоставляют механизмы инициализации, позволяя создавать объекты удобным способом для конкретного случая.
Порождающие шаблоны описывают механизм создания объекта и пытаются создать их в порядке, подходящем к условиям определенной ситуации.
Реализация шаблонов этой группы подразумевает создание механизмов, которые смогут отвечать за удобное и безопасное порождение новых объектов или даже целых семейств объектов.
Порождающие шаблоны проектирования решают задачу "простого" создания объекта без увеличения сложности структуры программного обеспечения.Решение выполняется за счет определенных механизмов контроля процесса создания объектов.
Эти шаблоны выходят на первый план, когда успех программного продукта в большей степени зависит от композиции информационных объектов, чем от ее классов. Основной акцент жизнедеятельности таких систем делается на определение ограниченного набора фундаментальных функций, с помощью сочетания которых можно получать более сложные функции.
Паттерны данной группы скрывают в себе информацию о классах, применяемых в системе, детали механизмов создания и взаимодействия этих классов.
Единственная информация об объектах, которая должна быть известна,–это интерфейсы, определенные с помощью абстрактных классов.
Это приводит к тому, что порождающие шаблоны обеспечивают большую гибкость при решении вопроса о том, что создается, кто это создает, как и когда. Можно собрать систему из "готовых" объектов с самой различной структурой и функциональностью статически (на этапе компиляции) или динамически (во время выполнения).
Все представители группы порождающих паттернов тесно связаны между собой.Их рассмотрение и изучение нужно проводить совместно, оценивая по ходу преимущества и недостатки каждого из них.
Очень часто возникают ситуации, когда целесообразно использовать несколько шаблонов одновременно для решения одной задачи. В таких случаях они дополняют друг друга (применяя шаблон проектирования "Строитель", можно использовать и другие шаблоны для решения задачи реализации его компонентов).
В условиях, когда требуется создать семейство взаимосвязанных или взаимозависимых объектов,не определяя при этом для них конкретных классов, наиболее очевидным решением будет реализация абстрактного класса, в котором должен быть объявлен интерфейс для создания конкретных классов.
"Банда четырех" определяет назначение шаблона "Абстрактная фабрика" как "предоставление интерфейса для создания семейств связанных между собой или зависимых друг от друга объектов без указания их конкретных классов".
Шаблон, который описывает решение задачи создания объектов путем их инициализации в классе общего назначения, носит название "Абстрактная фабрика".
Необходимое решение достигается путем координации процесса создания объектов, в котором помимо конкретных интерфейсов должны быть определены правила создания тех или иных семейств объектов.
Основными недостатками этого шаблона является то, что интерфейс абстрактной фабрики фиксирует набор объектов, которые можно создать. Последующая возможная модернизация, подразумевающая включение новых объектов,– зачастую затруднительная и ресурсоемкая операция.
Взамен обозначенных моментов моно получить следующие преимущества:
Шаблон "Абстрактная фабрика" применяется, когда необходимо координировать создание информационных объектов. Главным его качеством является то, что он позволяет отделить реализацию создания экземпляров объектов от объекта, который будет использовать эти экземпляры.
Для того чтобы реализация "Абстрактной фабрики" была выполнена, необходимо следовать следующим рекомендациям:
Этот шаблон проектирования является самым известным и наиболее обсуждаемым.
Несмотря на удобство его применения, шаблон "Одиночка", при всех неоспоримых достоинствах, о которых мы поговорим далее, один из самых спорных при разработке и рекомендуется, только если нет никакого другого способа решения.
Основной смысл использования паттерна "Одиночка" состоит в реализации единственного специального класса, к которому должны обращаться прочие информационные объекты, причем через единственную точку доступа. Это решается с помощью создания класса и определения статических методов этого класса, возвращающих этот единственный объект. Применение этого шаблона будет гарантировать, что у класса появится только один экземпляр, и сможет предоставить к нему точку доступа.
Жизненной аналогией этого шаблона проектирования является монопольный сервис или продукт, используемый на безальтернативной основе, –правительственный кабинет, ЖЭУ, энергостанция в удаленном географически районе и т.д.
При реализации этого шаблона разумнее создавать именно статические экземпляры абстрактного класса, а не объявлять требуемые методы статическими.Это будет являться дополнительным преимуществом использования этого шаблона, поскольку при применении методов экземпляра можно использовать механизм наследования и создавать подклассы.
Решение на основе создания экземпляра является более гибким, поскольку впоследствии может потребоваться уже не один экземпляр объекта, а несколько.
В качестве основных достоинств использования этого шаблона проектирования можно выделить следующие:
Единственным его недостатком является то, что в некоторых случаях он приводит к созданию немасштабируемого приложения.
Любая современная информационная система не должна зависеть от того, как в ней создаются, компонуются и представляются объекты.
Для того чтобы практически поддержать данный постулат, следует создавать новые объекты с помощью паттерна "Прототип". Этот шаблон объявляет интерфейс для клонирования самого себя. Логика приложения, создавая новый объект, обращается к "Прототипу" с запросом его клонирования.
Реализация этого шаблона в отдельных деталях напоминает паттерн "Абстрактная фабрика".Он также служит для создания объектов, однако с другим подходом.
Отличительными условиями, характеризующими уместность применения шаблона "Прототип", являются:
Нужно заметить, что клонирование не обязательно должно производиться в реализации самого шаблона "Прототип" – это может быть и какой-то другой объект, к которому сам "Прототип" должен иметь постоянный и полный доступ.
Аналогией этого шаблона является шаблон "Шаблонный метод". Разница состоит в том, что "Шаблонный метод"– поведенческий шаблон проектирования, определяющий основу алгоритма, на которой экземпляры объектов могут переопределять отдельные шаги общего алгоритма, а "Прототип"–порождающий шаблон, на основе которого объекты создаются.
В условиях, когда не определено, какой из системных компонентов должен отвечать за создание экземпляров класса, используют паттерн "Создатель экземпляров".
Идея реализации этого шаблона состоит в том, что ответственность за создание объектов класса 1 делегируется классу 2.
Предпосылки к созданию подобного шаблона проектирования исходят из необходимости класса 2 агрегировать, использовать, модифицировать объекты класса 1. Типичным структурным объектом, созданным на основе паттерна "Создатель экземпляров", является рассмотренный нами ранее шаблон "Информационный эксперт".
Основным преимуществом использования данного паттерна является сохранение гибкости системы по причине того, что созданные объекты класса 1, как правило, видны только для класса 1. Но в ситуации, когда процедура создания классов является сложной и многоэтапной, логичнее будет использовать шаблон проектирования "Абстрактная фабрика".
Если требуется отделить конструирование сложного объекта от его представления таким образом, чтобы в результате одного и того же конструирования могли получаться различные представления, используют шаблон "Строитель". Суть этого шаблона состоит в том, что алгоритм создания сложного объекта не должен зависеть от того, из каких частей состоит объект и как эти части должны взаимодействовать между собой.
Шаблон "Строитель" изолирует код, реализующий создание объекта и его представление.
Шаблон "Строитель" очень похож на уже изученные нами в этой главе шаблоны "Абстрактная фабрика" и "Прототип". Основное различие состоит в том, что "Строитель", как правило, уже должен содержать все сложные операции по созданию требуемого объекта:
Алгоритм реализации шаблона "Строитель"выглядит следующим образом:
В результате использования паттерна "Строитель" можно добиться следующих значимых преимуществ:
В условиях, когда необходимо определить интерфейс для создания конкретного объекта, но требуется делегировать системным подклассам решение о том, какой класс нужно инстанциировать, используется шаблон "Фабричный метод".
Алгоритм реализации этого паттерна выглядит следующим образом:
Преимуществом этого паттерна является то, что нет необходимости встраивать в код зависящие от приложения классы.
Основной недостаток этого шаблона – возникновение дополнительного уровня подклассов, который необходимо поддерживать и сопровождать.
Эта лекция является предпоследней лекцией данной книги и последней главой, в которой обсуждаются шаблоны проектирования.Данная работа выстроена в соответствии со справочной структурой, в которой описаны шаблоны проектирования информационных систем. Материал, используемый и излагаемый в этой книге, сформирован на основе исследований, обобщения и реструктурирования материала наиболее известных, значимых и признанных данных в этой области информационных технологий.
Описания шаблонов проектирования структурированы таким образом, чтобы обеспечить максимальное удобство в их освоении и использовании. Для этой цели выделены пять групп шаблонов проектирования.Каждая из этих групп описывает паттерны для решения задач определенного уровня– от архитектурных задач до задач порождения информационных объектов внутри конкретной информационной системы.
В следующей главе мы перейдем к обсуждению задач, связанных с оптимальным представлением шаблонов в едином архитектурном виде, ценным для решения конкретных практических задач.
Каждая информационная система оперирует множеством различных информационных компонентов. Взаимодействуя, компоненты определяют сложность системы и ее значимость.Но сложность определяется не столько количеством взаимодействий между различными частями информационной системы, сколько количеством объектов, порождаемых системой в ходе активных фаз ее жизненного цикла. Любая современная "авторитетная" корпоративная информационная учетная система насчитывает и поддерживает не один миллион порожденных ею объектов. А на вопрос, как это делать с наименьшими потерями для ресурсов системы, отвечают порождающие шаблоны проектирования.
Порождающие шаблоны предоставляют механизмы инициализации, позволяя создавать объекты удобным способом для конкретного случая.
Порождающие шаблоны описывают механизм создания объекта и пытаются создать их в порядке, подходящем к условиям определенной ситуации.
Реализация шаблонов этой группы подразумевает создание механизмов, которые смогут отвечать за удобное и безопасное порождение новых объектов или даже целых семейств объектов.
Порождающие шаблоны проектирования решают задачу "простого" создания объекта без увеличения сложности структуры программного обеспечения.Решение выполняется за счет определенных механизмов контроля процесса создания объектов.
Эти шаблоны выходят на первый план, когда успех программного продукта в большей степени зависит от композиции информационных объектов, чем от ее классов. Основной акцент жизнедеятельности таких систем делается на определение ограниченного набора фундаментальных функций, с помощью сочетания которых можно получать более сложные функции.
Паттерны данной группы скрывают в себе информацию о классах, применяемых в системе, детали механизмов создания и взаимодействия этих классов.
Единственная информация об объектах, которая должна быть известна,–это интерфейсы, определенные с помощью абстрактных классов.
Это приводит к тому, что порождающие шаблоны обеспечивают большую гибкость при решении вопроса о том, что создается, кто это создает, как и когда. Можно собрать систему из "готовых" объектов с самой различной структурой и функциональностью статически (на этапе компиляции) или динамически (во время выполнения).
Все представители группы порождающих паттернов тесно связаны между собой.Их рассмотрение и изучение нужно проводить совместно, оценивая по ходу преимущества и недостатки каждого из них.
Очень часто возникают ситуации, когда целесообразно использовать несколько шаблонов одновременно для решения одной задачи. В таких случаях они дополняют друг друга (применяя шаблон проектирования "Строитель", можно использовать и другие шаблоны для решения задачи реализации его компонентов).
В условиях, когда требуется создать семейство взаимосвязанных или взаимозависимых объектов,не определяя при этом для них конкретных классов, наиболее очевидным решением будет реализация абстрактного класса, в котором должен быть объявлен интерфейс для создания конкретных классов.
"Банда четырех" определяет назначение шаблона "Абстрактная фабрика" как "предоставление интерфейса для создания семейств связанных между собой или зависимых друг от друга объектов без указания их конкретных классов".
Шаблон, который описывает решение задачи создания объектов путем их инициализации в классе общего назначения, носит название "Абстрактная фабрика".
Необходимое решение достигается путем координации процесса создания объектов, в котором помимо конкретных интерфейсов должны быть определены правила создания тех или иных семейств объектов.
Основными недостатками этого шаблона является то, что интерфейс абстрактной фабрики фиксирует набор объектов, которые можно создать. Последующая возможная модернизация, подразумевающая включение новых объектов,– зачастую затруднительная и ресурсоемкая операция.
Взамен обозначенных моментов моно получить следующие преимущества:
Шаблон "Абстрактная фабрика" применяется, когда необходимо координировать создание информационных объектов. Главным его качеством является то, что он позволяет отделить реализацию создания экземпляров объектов от объекта, который будет использовать эти экземпляры.
Для того чтобы реализация "Абстрактной фабрики" была выполнена, необходимо следовать следующим рекомендациям:
Этот шаблон проектирования является самым известным и наиболее обсуждаемым.
Несмотря на удобство его применения, шаблон "Одиночка", при всех неоспоримых достоинствах, о которых мы поговорим далее, один из самых спорных при разработке и рекомендуется, только если нет никакого другого способа решения.
Основной смысл использования паттерна "Одиночка" состоит в реализации единственного специального класса, к которому должны обращаться прочие информационные объекты, причем через единственную точку доступа. Это решается с помощью создания класса и определения статических методов этого класса, возвращающих этот единственный объект. Применение этого шаблона будет гарантировать, что у класса появится только один экземпляр, и сможет предоставить к нему точку доступа.
Жизненной аналогией этого шаблона проектирования является монопольный сервис или продукт, используемый на безальтернативной основе, –правительственный кабинет, ЖЭУ, энергостанция в удаленном географически районе и т.д.
При реализации этого шаблона разумнее создавать именно статические экземпляры абстрактного класса, а не объявлять требуемые методы статическими.Это будет являться дополнительным преимуществом использования этого шаблона, поскольку при применении методов экземпляра можно использовать механизм наследования и создавать подклассы.
Решение на основе создания экземпляра является более гибким, поскольку впоследствии может потребоваться уже не один экземпляр объекта, а несколько.
В качестве основных достоинств использования этого шаблона проектирования можно выделить следующие:
Единственным его недостатком является то, что в некоторых случаях он приводит к созданию немасштабируемого приложения.
Любая современная информационная система не должна зависеть от того, как в ней создаются, компонуются и представляются объекты.
Для того чтобы практически поддержать данный постулат, следует создавать новые объекты с помощью паттерна "Прототип". Этот шаблон объявляет интерфейс для клонирования самого себя. Логика приложения, создавая новый объект, обращается к "Прототипу" с запросом его клонирования.
Реализация этого шаблона в отдельных деталях напоминает паттерн "Абстрактная фабрика".Он также служит для создания объектов, однако с другим подходом.
Отличительными условиями, характеризующими уместность применения шаблона "Прототип", являются:
Нужно заметить, что клонирование не обязательно должно производиться в реализации самого шаблона "Прототип" – это может быть и какой-то другой объект, к которому сам "Прототип" должен иметь постоянный и полный доступ.
Аналогией этого шаблона является шаблон "Шаблонный метод". Разница состоит в том, что "Шаблонный метод"– поведенческий шаблон проектирования, определяющий основу алгоритма, на которой экземпляры объектов могут переопределять отдельные шаги общего алгоритма, а "Прототип"–порождающий шаблон, на основе которого объекты создаются.
В условиях, когда не определено, какой из системных компонентов должен отвечать за создание экземпляров класса, используют паттерн "Создатель экземпляров".
Идея реализации этого шаблона состоит в том, что ответственность за создание объектов класса 1 делегируется классу 2.
Предпосылки к созданию подобного шаблона проектирования исходят из необходимости класса 2 агрегировать, использовать, модифицировать объекты класса 1. Типичным структурным объектом, созданным на основе паттерна "Создатель экземпляров", является рассмотренный нами ранее шаблон "Информационный эксперт".
Основным преимуществом использования данного паттерна является сохранение гибкости системы по причине того, что созданные объекты класса 1, как правило, видны только для класса 1. Но в ситуации, когда процедура создания классов является сложной и многоэтапной, логичнее будет использовать шаблон проектирования "Абстрактная фабрика".
Если требуется отделить конструирование сложного объекта от его представления таким образом, чтобы в результате одного и того же конструирования могли получаться различные представления, используют шаблон "Строитель". Суть этого шаблона состоит в том, что алгоритм создания сложного объекта не должен зависеть от того, из каких частей состоит объект и как эти части должны взаимодействовать между собой.
Шаблон "Строитель" изолирует код, реализующий создание объекта и его представление.
Шаблон "Строитель" очень похож на уже изученные нами в этой главе шаблоны "Абстрактная фабрика" и "Прототип". Основное различие состоит в том, что "Строитель", как правило, уже должен содержать все сложные операции по созданию требуемого объекта:
Алгоритм реализации шаблона "Строитель"выглядит следующим образом:
В результате использования паттерна "Строитель" можно добиться следующих значимых преимуществ:
В условиях, когда необходимо определить интерфейс для создания конкретного объекта, но требуется делегировать системным подклассам решение о том, какой класс нужно инстанциировать, используется шаблон "Фабричный метод".
Алгоритм реализации этого паттерна выглядит следующим образом:
Преимуществом этого паттерна является то, что нет необходимости встраивать в код зависящие от приложения классы.
Основной недостаток этого шаблона – возникновение дополнительного уровня подклассов, который необходимо поддерживать и сопровождать.
Эта лекция является предпоследней лекцией данной книги и последней главой, в которой обсуждаются шаблоны проектирования.Данная работа выстроена в соответствии со справочной структурой, в которой описаны шаблоны проектирования информационных систем. Материал, используемый и излагаемый в этой книге, сформирован на основе исследований, обобщения и реструктурирования материала наиболее известных, значимых и признанных данных в этой области информационных технологий.
Описания шаблонов проектирования структурированы таким образом, чтобы обеспечить максимальное удобство в их освоении и использовании. Для этой цели выделены пять групп шаблонов проектирования.Каждая из этих групп описывает паттерны для решения задач определенного уровня– от архитектурных задач до задач порождения информационных объектов внутри конкретной информационной системы.
В следующей главе мы перейдем к обсуждению задач, связанных с оптимальным представлением шаблонов в едином архитектурном виде, ценным для решения конкретных практических задач.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.