Существуют несколько видов шаблонов. Выбор определенного вида зависит от клинической картины.
Implant-Guide-М (Mucosa)Шаблон с опорой на слизистую. Такой вариант подходит при полной адентиии и дефектах (протяженных, концевых, включенных). Возможна операция без разреза или с минимальным откидыванием слизисто-надкостничного лоскута, а также изготовление временной ортопедической конструкции. |
Implant-Guide-Т (Teeth)- хирургический шаблон с опорой на зубы. Показаниями к применению являются отсутствие одного, двух зубов. Здесь также возможна имплантация без разреза и изготовление временной ортопедической конструкции. |
Implant-Guide-B (Bone)- хирургический шаблон с опорой на кость. Оптимальные области применения такого варианта: концевые дефекты; включенные дефекты более двух зубов; операции, с одномоментной костной пластикой; узкий, остроконечный костный гребень. Такой шаблон изготавливается с фрагментом челюсти. При операции в большинстве случаев не требуется фиксация. |
Implant-Guide-ВТ (Bone+Teeth)- хирургический шаблон с опорой на кость и зубы. Этот вариант шаблона применяют в тех же случаях, что и предыдущий, но за счет опоры на зубы границы шаблона можно уменьшить. |
Implant-Guide-МT (Mucosa+Teeth)- хирургический шаблон опорой на слизистую и зубы. Вид шаблона, который имеет широкую область применения. Позволяет оперировать без разреза, можно заранее изготовить временную ортопедическую конструкцию. |
Вы имеете возможность заказать пробный Implant-Guide для своего пациента. Для этого, необходимо прислать к нам в Центр данные его компьютерной томографии. Наши специалисты бесплатно обработают всю информацию и изготовят шаблон. При заказе пробного шаблона вместе с ним в комплекте идут набор сверл с ограничителями, фиксирующие винты и другие материалы и инструменты, необходимые доктору для проведения имплантации.
Шаблоны содержания состоит из тех же элементов, что и шаблон оформления. Кроме того, в него входит предлагаемый вариант структуры презентации. Шаблон содержания создается в самом начале работы над презентацией с помощью Мастера автосодержания . Образец одного из слайдов шаблона содержания с предлагаемыми вариантами маркированных пунктов списка. Можно создать собственные шаблоны содержания и добавить их в Мастер автосодержания .
Шаблоны с веб-узлов. При создании презентации всегда можно использовать готовые шаблоны с веб-узла. К таким файлам можно обращаться, не выходя из MS PowerPoint .
Шаблоны, доступные по адресу Microsoft.com . Можно выбрать дополнительные образцы шаблонов MS PowerPoint из Библиотеки шаблонов Microsoft Office . Они сгруппированы по видам презентаций.
Конец работы -
Эта тема принадлежит разделу:
Санкт петербургский государственный университет сервиса и.. кафедра информатика..
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ:
Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:
Твитнуть |
Информатика
Учебное пособие для студентов, обучающихся по направлению 080500.62 (521500) «Менеджмент»
Подп. к печати
Формат 60&
AloneCoder 10 апреля 2017 в 15:49
Шаблоны проектирования - это способ решения периодически возникающих проблем. Точнее, это руководства по решению конкретных проблем. Это не классы, пакеты или библиотеки, которые вы можете вставить в своё приложение и ожидать волшебства.
Как сказано в Википедии:
В программной инженерии шаблон проектирования приложений - это многократно применяемое решение регулярно возникающей проблемы в рамках определённого контекста архитектуры приложения. Шаблон - это не законченное архитектурное решение, которое можно напрямую преобразовать в исходный или машинный код. Это описание подхода к решению проблемы, который можно применять в разных ситуациях.
В статье приведены примеры на PHP 7, но пусть вас это не смущает, ведь заложенные в шаблонах принципы неизменны. Кроме того, внедряется поддержка других языков .
Вкратце
Порождающие шаблоны описывают создание (instantiate) объекта или группы связанных объектов.
Википедия
В программной инженерии порождающими называют шаблоны, которые используют механизмы создания объектов, чтобы создавать объекты подходящим для данной ситуации способом. Базовый способ создания может привести к проблемам в архитектуре или к её усложнению. Порождающие шаблоны пытаются решать эти проблемы, управляя способом создания объектов.
Аналогия
Допустим, вы строите дом и вам нужны двери. Будет бардак, если каждый раз, когда вам требуется дверь, вы станете вооружаться инструментами и делать её на стройплощадке. Вместо этого вы закажете двери на фабрике.
Вкратце
Простая фабрика просто генерирует экземпляр для клиента без предоставления какой-либо логики экземпляра.
Википедия
В объектно ориентированном программировании фабрикой называется объект, создающий другие объекты. Формально фабрика - это функция или метод, возвращающая объекты разных прототипов или классов из вызова какого-то метода, который считается новым.
Пример
Для начала нам нужен интерфейс двери и его реализация.
Теперь соорудим фабрику дверей, которая создаёт и возвращает нам двери.
Использование:
Когда использовать?
Когда создание объекта подразумевает какую-то логику, а не просто несколько присваиваний, то имеет смысл делегировать задачу выделенной фабрике, а не повторять повсюду один и тот же код.
Аналогия
Одна кадровичка не в силах провести собеседования со всеми кандидатами на все должности. В зависимости от вакансии она может делегировать разные этапы собеседований разным сотрудникам.
Вкратце
Это способ делегирования логики создания объектов (instantiation logic) дочерним классам.
Википедия
В классо-ориентированном программировании (class-based programming) фабричным методом называют порождающий шаблон проектирования, использующий генерирующие методы (factory method) для решения проблемы создания объектов без указания для них конкретных классов. Объекты создаются посредством вызова не конструктора, а генерирующего метода, определённого в интерфейсе и реализованного дочерними классами либо реализованного в базовом классе и, опционально, переопределённого (overridden) производными классами (derived classes).
Пример
Сначала создадим интерфейс сотрудника, проводящего собеседование, и некоторые реализации для него.
Теперь создадим кадровичку HiringManager .
Любой дочерний класс может расширять его и предоставлять нужного собеседующего:
Использование:
Когда использовать?
Этот шаблон полезен для каких-то общих обработок в классе, но требуемые подклассы динамически определяются в ходе выполнения (runtime). То есть когда клиент не знает, какой именно подкласс может ему понадобиться.
Аналогия
Вернёмся к примеру с дверями из «Простой фабрики». В зависимости от своих потребностей вы можете купить деревянную дверь в одном магазине, стальную - в другом, пластиковую - в третьем. Для монтажа вам понадобятся разные специалисты: деревянной двери нужен плотник, стальной - сварщик, пластиковой - спец по ПВХ-профилям.
Вкратце
Это фабрика фабрик. То есть фабрика, группирующая индивидуальные, но взаимосвязанные/взаимозависимые фабрики без указания для них конкретных классов.
Википедия
Шаблон «Абстрактная фабрика» описывает способ инкапсулирования группы индивидуальных фабрик, объединённых некой темой, без указания для них конкретных классов.
Пример
Создадим интерфейс Door и несколько реализаций для него.
Теперь нам нужны специалисты по установке каждого вида дверей.
Мы получили абстрактную фабрику, которая позволяет создавать семейства объектов или взаимосвязанные объекты. То есть фабрика деревянных дверей создаст деревянную дверь и человека для её монтажа, фабрика стальных дверей - стальную дверь и соответствующего специалиста и т. д.
Использование:
Здесь фабрика деревянных дверей инкапсулировала carpenter и wooden door , фабрика стальных дверей - iron door and welder . То есть можно быть уверенными, что для каждой из созданных дверей мы получим правильного специалиста.
Когда использовать?
Когда у вас есть взаимосвязи с не самой простой логикой создания (creation logic).
Аналогия
Допустим, вы пришли в забегаловку, заказали бургер дня, и вам выдали его без вопросов . Это пример «Простой фабрики». Но иногда логика создания состоит из большего количества шагов. К примеру, при заказе бургера дня есть несколько вариантов хлеба, начинки, соусов, дополнительных ингредиентов. В таких ситуациях помогает шаблон «Строитель».
Вкратце
Шаблон позволяет создавать разные свойства объекта, избегая загрязнения конструктора (constructor pollution). Это полезно, когда у объекта может быть несколько свойств. Или когда создание объекта состоит из большого количества этапов.
Википедия
Шаблон «Строитель» предназначен для поиска решения проблемы антипаттерна Telescoping constructor.
Поясню, что такое антипаттерн Telescoping constructor. Каждый из нас когда-либо сталкивался с подобным конструктором:
Как видите, количество параметров может быстро разрастись, и станет трудно разобраться в их структуре. Кроме того, этот список параметров будет расти и дальше, если в будущем вы захотите добавить новые опции. Это и есть антипаттерн Telescoping constructor.
Пример
Разумная альтернатива - шаблон «Строитель». Сначала создадим бургер:
А затем добавим «строителя»:
Использование:
Когда использовать?
Когда у объекта может быть несколько свойств и когда нужно избежать Telescoping constructor. Ключевое отличие от шаблона «Простая фабрика»: он используется в одноэтапном создании, а «Строитель» - в многоэтапном.
Аналогия
Помните клонированную овечку Долли? Так вот, этот шаблон проектирования как раз посвящён клонированию.
Вкратце
Объект создаётся посредством клонирования существующего объекта.
Википедия
Шаблон «Прототип» используется, когда типы создаваемых объектов определяются экземпляром-прототипом, клонированным для создания новых объектов.
То есть шаблон позволяет дублировать существующий объект и модифицировать копию в соответствии с потребностями. Без заморочек с созданием объекта с нуля и его настройкой.
Пример
В PHP это легко можно сделать с помощью clone:
Затем можно клонировать так:
Также для модификации процедуры клонирования можно обратиться к магическому методу __clone .
Когда использовать?
Когда необходимый объект аналогичен уже существующему или когда создание с нуля дороже клонирования.
Аналогия
У страны может быть только один президент. Он должен действовать, когда того требуют обстоятельства и долг. В данном случае президент - одиночка.
Вкратце
Шаблон позволяет удостовериться, что создаваемый объект - единственный в своём классе.
Википедия
Шаблон «Одиночка» позволяет ограничивать создание класса единственным объектом. Это удобно, когда для координации действий в рамках системы требуется, чтобы объект был единственным в своём классе.
На самом деле шаблон «Одиночка» считается антипаттерном, не следует им слишком увлекаться. Он необязательно плох и иногда бывает полезен. Но применяйте его с осторожностью, потому что «Одиночка» вносит в приложение глобальное состояние, так что изменение в одном месте может повлиять на все остальные случаи использования, а отлаживать такое - не самое простое занятие. Другие недостатки шаблона: он делает ваш код сильно связанным (tightly coupled), а создание прототипа (mocking) «Одиночки» может быть затруднено.
Пример
Сделайте конструктор приватным, отключите расширения и создайте статическую переменную для хранения экземпляра:
Использование:
Вкратце
Эти шаблоны в основном посвящены компоновке объектов (object composition). То есть тому, как сущности могут друг друга использовать. Ещё одно объяснение: структурные шаблоны помогают ответить на вопрос «Как построить программный компонент?»
Википедия
Структурными называют шаблоны, которые облегчают проектирование, определяя простой способ реализации взаимоотношений между сущностями.
Аналогия
Допустим, у вас на карте памяти есть какие-то картинки. Их нужно перенести на компьютер. Нужен адаптер, совместимый с входным портом компьютера, в который можно вставить карту памяти. В данном примере адаптер - это картридер. Ещё один пример: переходник, позволяющий использовать американский блок питания с российской розеткой. Третий пример: переводчик - это адаптер, соединяющий двух людей, говорящих на разных языках.
Вкратце
Шаблон «Адаптер» позволяет помещать несовместимый объект в обёртку, чтобы он оказался совместимым с другим классом.
Википедия
Шаблон проектирования «Адаптер» позволяет использовать интерфейс существующего класса как другой интерфейс. Этот шаблон часто применяется для обеспечения работы одних классов с другими без изменения их исходного кода.
Пример
Представим себе охотника на львов.
Создадим интерфейс Lion , который реализует все типы львов.
Охотник должен охотиться на все реализации интерфейса Lion .
Добавим теперь дикую собаку WildDog , на которую охотник тоже может охотиться. Но у нас не получится сделать это напрямую, потому что у собаки другой интерфейс. Чтобы она стала совместима с охотником, нужно создать подходящий адаптер.
Теперь WildDog может вступить в игру действие благодаря WildDogAdapter .
Аналогия
Допустим, у вас есть сайт с несколькими страницами. Вы хотите позволить пользователям менять темы оформления страниц. Как бы вы поступили? Создали множественные копии каждой страницы для каждой темы или просто сделали отдельные темы и подгружали их в соответствии с настройками пользователей? Шаблон «Мост» позволяет реализовать второй подход.
Вкратце
Шаблон «Мост» - это предпочтение компоновки наследованию. Подробности реализации передаются из одной иерархии другому объекту с отдельной иерархией.
Википедия
Шаблон «Мост» означает отделение абстракции от реализации, чтобы их обе можно было изменять независимо друг от друга.
Пример
Реализуем вышеописанный пример с веб-страницами. Сделаем иерархию WebPage:
Отделим иерархию тем:
Обе иерархии:
Аналогия
Каждая компания состоит из сотрудников. У каждого сотрудника есть одни и те же свойства: зарплата, обязанности, отчётность перед кем-то, субординация...
Вкратце
Шаблон «Компоновщик» позволяет клиентам обрабатывать отдельные объекты в едином порядке.
Википедия
Шаблон «Компоновщик» описывает общий порядок обработки группы объектов, словно это одиночный экземпляр объекта. Суть шаблона - компонование объектов в древовидную структуру для представления иерархии от частного к целому. Шаблон позволяет клиентам одинаково обращаться к отдельным объектам и к группам объектов.
Пример
Вот разные типы сотрудников:
А вот компания, которая состоит из сотрудников разных типов:
Использование:
Аналогия
Допустим, у вас свой автосервис, оказывающий различные услуги. Как выставлять клиентам счёт? Добавлять последовательно услуги и их стоимость - и в конце концов получится итоговая сумма к оплате. Здесь каждый тип услуги - это «декоратор».
Вкратце
Шаблон «Декоратор» позволяет во время выполнения динамически изменять поведение объекта, обёртывая его в объект класса «декоратора».
Википедия
Шаблон «Декоратор» позволяет подключать к объекту дополнительное поведение (статически или динамически), не влияя на поведение других объектов того же класса. Шаблон часто используется для соблюдения принципа единственной обязанности (Single Responsibility Principle), поскольку позволяет разделить функциональность между классами для решения конкретных задач.
Пример
Возьмём в качестве примера кофе. Сначала просто реализуем интерфейс:
Можно сделать код расширяемым, чтобы при необходимости вносить модификации. Добавим «декораторы»:
Теперь приготовим кофе:
Аналогия
Как включить компьютер? Вы скажете: «Нажать кнопку включения». Это потому, что вы используете простой интерфейс, предоставляемый компьютером наружу. А внутри него происходит очень много процессов. Простой интерфейс для сложной подсистемы - это фасад.
Вкратце
Шаблон «Фасад» предоставляет упрощённый интерфейс для сложной подсистемы.
Википедия
«Фасад» - это объект, предоставляющий упрощённый интерфейс для более крупного тела кода, например библиотеки классов.
Пример
Создадим класс computer:
Теперь «фасад»:
Использование:
Аналогия
Обычно в заведениях общепита чай заваривают не отдельно для каждого клиента, а сразу в некой крупной ёмкости. Это позволяет экономить ресурсы: газ/электричество, время и т. д. Шаблон «Приспособленец» как раз посвящён общему использованию (sharing).
Вкратце
Шаблон применяется для минимизирования использования памяти или вычислительной стоимости за счёт общего использования как можно большего количества одинаковых объектов.
Википедия
«Приспособленец» - это объект, минимизирующий использование памяти за счёт общего с другими, такими же объектами использования как можно большего объёма данных. Это способ применения многочисленных объектов, когда простое повторяющееся представление приведёт к неприемлемому потреблению памяти.
Пример
Сделаем типы чая и чайника.
Сделаем забегаловку TeaShop , принимающую и обрабатывающую заказы:
Использование:
Аналогия
Открыть дверь с электронным замком можно с помощью карточки доступа (access card) или кнопки для обхода системы безопасности. То есть основная функциональность двери - открыться, а поверх неё может быть ещё какая-то функциональность - «заместитель».
Вкратце
С помощью шаблона «Заместитель» класс представляет функциональность другого класса.
Википедия
В наиболее общей форме «Заместитель» - это класс, функционирующий как интерфейс к чему-либо. Это оболочка или объект-агент, вызываемый клиентом для получения доступа к другому, «настоящему» объекту. «Заместитель» может просто переадресовывать запросы настоящему объекту, а может предоставлять дополнительную логику: кеширование данных при интенсивном выполнении операций или потреблении ресурсов настоящим объектом; проверка предварительных условий (preconditions) до вызова выполнения операций настоящим объектом.
Пример
Реализуем интерфейс двери и саму дверь:
Сделаем «заместителя», чтобы дверь могла выполнять защитную функцию:
Использование:
Ещё один пример связан с реализацией преобразователя данных (data-mapper). С помощью этого шаблона я недавно сделал ODM (Object Data Mapper) для MongoDB. Я написал «заместителя» вокруг mongo-классов, воспользовавшись волшебным методом __call() . Все вызовы методов проходили к оригинальным mongo-классам через «заместителя», а извлечённые результаты возвращались как есть. Только в случае с find или findOne данные преобразовывались в объекты требуемого класса, которые возвращались вместо Cursor .
Вкратце
Они связаны с присвоением обязанностей (responsibilities) объектам. От структурных шаблонов они отличаются тем, что не просто описывают структуру, но и очерчивают шаблоны передачи данных, обеспечения взаимодействия. То есть поведенческие шаблоны позволяют ответить на вопрос «Как реализовать поведение в программном компоненте?»
Википедия
Поведенческие шаблоны проектирования определяют алгоритмы и способы реализации взаимодействия различных объектов и классов. Они обеспечивают гибкость взаимодействия между объектами.
Аналогия
Допустим, для вашего банковского счёта доступны три способа оплаты (A , B и C). Каждый подразумевает разные доступные суммы денег: A - 100 долларов, B - 300, C - 1000. Приоритетность способов при оплате: А, затем В, затем С. Вы пытаетесь купить что-то за 210 долларов. На основании «цепочки ответственности» система попытается оплатить способом А. Если денег хватает - то оплата проходит, а цепочка прерывается. Если денег не хватает - то система переходит к способу В, и т. д.
Вкратце
Шаблон «Цепочка ответственности» позволяет создавать цепочки объектов. Запрос входит с одного конца цепочки и движется от объекта к объекту, пока не будет найден подходящий обработчик.
Википедия
Шаблон «Цепочка ответственности» содержит исходный управляющий объект и ряд обрабатывающих объектов. Каждый обрабатывающий объект содержит логику, определяющую типы командных объектов, которые он может обрабатывать, а остальные передаются по цепочке следующему обрабатывающему объекту.
Пример
Создадим основной банковский счёт, содержащий логику связывания счетов в цепочки, и сами счета.
Теперь с помощью определённых выше линков (Bank, Paypal, Bitcoin) подготовим цепочку:
Аналогия
Вы пришли в ресторан. Вы (Client) просите официанта (Invoker) принести блюда (Command). Официант перенаправляет запрос шеф-повару (Receiver), который знает, что и как готовить. Другой пример: вы (Client) включаете (Command) телевизор (Receiver) с помощью пульта (Invoker).
Вкратце
Шаблон «Команда» позволяет инкапсулировать действия в объекты. Ключевая идея - предоставить средства отделения клиента от получателя.
Википедия
В шаблоне «Команда» объект используется для инкапсуляции всей информации, необходимой для выполнения действия либо для его инициирования позднее. Информация включает в себя имя метода; объект, владеющий методом; значения параметров метода.
Пример
Сначала сделаем получателя, содержащего реализации каждого действия, которое может быть выполнено.
Теперь сделаем интерфейс, который будет реализовывать каждая команда. Также сделаем набор команд.
Теперь сделаем вызывающего Invoker , с которым будет взаимодействовать клиент для обработки команд.
Посмотрим, как всё это может использовать клиент:
Шаблон «Команда» можно использовать и для реализации системы на основе транзакций. То есть системы, в которой вы сохраняете историю команд по мере их выполнения. Если последняя команда выполнена успешно, то всё хорошо. В противном случае система итерирует по истории и делает undo для всех выполненных команд.
Аналогия
Хороший пример - радиоприёмник. Вы начинаете с какой-то радиостанции, а затем перемещаетесь по станциям вперёд/назад. То есть устройство предоставляет интерфейс для итерирования по каналам.
Вкратце
Шаблон - это способ доступа к элементам объекта без раскрытия базового представления.
Википедия
В этом шаблоне итератор используется для перемещения по контейнеру и обеспечения доступа к элементам контейнера. Шаблон подразумевает отделение алгоритмов от контейнера. В каких-то случаях алгоритмы, специфичные для этого контейнера, не могут быть отделены.
Пример
В PHP довольно легко реализовать этот шаблон с помощью стандартной библиотеки PHP. Сначала создадим радиостанцию RadioStation .
Теперь создадим итератор:
Использование:
Аналогия
Когда вы говорите с кем-то по мобильнику, то между вами и собеседником находится мобильный оператор. То есть сигнал передаётся через него, а не напрямую. В данном примере оператор - посредник.
Вкратце
Шаблон «Посредник» подразумевает добавление стороннего объекта («посредника») для управления взаимодействием между двумя объектами («коллегами»). Шаблон помогает уменьшить связанность (coupling) классов, общающихся друг с другом, ведь теперь они не должны знать о реализациях своих собеседников.
Википедия
Шаблон определяет объект, который инкапсулирует способ взаимодействия набора объектов.
Пример
Простейший пример: чат («посредник»), в котором пользователи («коллеги») отправляют друг другу сообщения.
Создадим «посредника»:
Теперь создадим «коллег»:
Использование:
Аналогия
В качестве примера можно привести калькулятор («создатель»), у которого любая последняя выполненная операция сохраняется в памяти («хранитель»), чтобы вы могли снова вызвать её с помощью каких-то кнопок («опекун»).
Вкратце
Шаблон «Хранитель» фиксирует и хранит текущее состояние объекта, чтобы оно легко восстанавливалось.
Википедия
Шаблон «Хранитель» позволяет восстанавливать объект в его предыдущем состоянии (отмена через откат - undo via rollback).
Обычно шаблон применяется, когда нужно реализовать функциональность отмены операции.
Пример
Текстовый редактор время от времени сохраняет своё состояние, чтобы можно было восстановить текст в каком-то прошлом виде.
Сначала создадим объект «хранитель», в котором можно сохранять состояние редактора.
Теперь сделаем редактор («создатель»), который будет использовать объект «хранитель».
Использование:
Аналогия
Хороший пример: люди, ищущие работу, подписываются на публикации на сайтах вакансий и получают уведомления, когда появляются вакансии, подходящие по параметрам.
Вкратце
Шаблон определяет зависимость между объектами, чтобы при изменении состояния одного из них его «подчинённые» узнавали об этом.
Википедия
В шаблоне «Наблюдатель» есть объект («субъект»), ведущий список своих «подчинённых» («наблюдателей») и автоматически уведомляющий их о любом изменении своего состояния, обычно с помощью вызова одного из их методов.
Пример
Сначала реализуем людей, ищущих работу, которых нужно уведомлять о появлении вакансий.
Теперь реализуем публикации вакансий, на которые люди будут подписываться.
Использование:
Аналогия
Туристы собрались в Дубай. Сначала им нужен способ попасть туда (виза). После прибытия они будут посещать любую часть города, не спрашивая разрешения, ходить где вздумается. Просто скажите им о каком-нибудь месте - и туристы могут там побывать. Шаблон «Посетитель» помогает добавлять места для посещения.
Вкратце
Шаблон «Посетитель» позволяет добавлять будущие операции для объектов без их модифицирования.
Википедия
Шаблон «Посетитель» - это способ отделения алгоритма от структуры объекта, в которой он оперирует. Результат отделения - возможность добавлять новые операции в существующие структуры объектов без их модифицирования. Это один из способов соблюдения принципа открытости/закрытости (open/closed principle).
Пример
Возьмём зоопарк: у нас есть несколько видов животных, и нам нужно послушать издаваемые ими звуки.
Реализуем животных:
Реализуем посетителя:
Использование:
Это можно было сделать просто с помощью иерархии наследования, но тогда пришлось бы модифицировать животных при каждом добавлении к ним новых действий. А здесь менять их не нужно. Например, мы можем добавить животным прыжки, просто создав нового посетителя:
Использование:
Аналогия
Возьмём пример с пузырьковой сортировкой. Мы её реализовали, но с ростом объёмов данных сортировка стала выполняться очень медленно. Тогда мы сделали быструю сортировку (Quick sort). Алгоритм работает быстрее на больших объёмах, но на маленьких он очень медленный. Тогда мы реализовали стратегию, при которой для маленьких объёмов данных используется пузырьковая сортировка, а для больших - быстрая.
Вкратце
Шаблон «Стратегия» позволяет переключаться между алгоритмами или стратегиями в зависимости от ситуации.
Википедия
Шаблон «Стратегия» позволяет при выполнении выбирать поведение алгоритма.
Пример
Возьмём вышеописанный пример. Сначала сделаем интерфейс стратегии и реализации самих стратегий.
Теперь реализуем клиента, который будет использовать нашу стратегию.
Использование:
Аналогия
Допустим, в графическом редакторе вы выбрали инструмент «Кисть». Она меняет своё поведение в зависимости от настройки цвета: т. е. рисует линию выбранного цвета.
Вкратце
Шаблон позволяет менять поведение класса при изменении состояния.
Википедия
Шаблон «Состояние» реализует машину состояний объектно ориентированным способом. Это достигается с помощью:
- реализации каждого состояния в виде производного класса интерфейса шаблона «Состояние»,
- реализации переходов состояний (state transitions) посредством вызова методов, определённых вышестоящим классом (superclass).
Шаблон «Состояние» - это в некотором плане шаблон «Стратегия», при котором возможно переключение текущей стратегии с помощью вызова методов, определённых в интерфейсе шаблона.
Пример
Текстовый редактор меняет состояние текста, который вы печатаете, т. е. если выбрано полужирное начертание - то редактор печатает полужирным и т. д.
Сначала сделаем интерфейс состояний и сами состояния:
Сделаем редактор:
Использование:
Аналогия
Допустим, вы собрались строить дома. Этапы будут такими:
Порядок этапов никогда не меняется. Вы не настелите крышу до возведения стен - и т. д. Но каждый этап модифицируется: стены, например, можно возвести из дерева, кирпича или газобетона.
Вкратце
«Шаблонный метод» определяет каркас выполнения определённого алгоритма, но реализацию самих этапов делегирует дочерним классам.
Википедия
«Шаблонный метод» - это поведенческий шаблон, определяющий основу алгоритма и позволяющий наследникам переопределять некоторые шаги алгоритма, не изменяя его структуру в целом.
Пример
Допустим, у нас есть программный инструмент, позволяющий тестировать, проводить контроль качества кода (lint), выполнять сборку, генерировать отчёты сборки (отчёты о покрытии кода, о качестве кода и т. д.), а также развёртывать приложение на тестовом сервере.
Сначала наш базовый класс определяет каркас алгоритма сборки.
Теперь создаём реализации:
Использование:
На этом обзор закончен. Я продолжу его улучшать и планирую написать главы про архитектурные шаблоны. Так что периодически заглядывайте.
Теги:
- (нем. schablon, от фр. chantilion образец). Вырезной образец узора, по которому рисуют, вырезывают или вылепляют архитектурные украшения и проч. работы. Словарь иностранных слов, вошедших в состав русского языка. Чудинов А.Н., 1910. ШАБЛОН 1)… … Словарь иностранных слов русского языка
См. привычка... Словарь русских синонимов и сходных по смыслу выражений. под. ред. Н. Абрамова, М.: Русские словари, 1999. шаблон образец, трафарет, модель, маска, лекало, штамп, стандарт; обычай, привычка; трюизм, половой акт, казенщина, общее… … Словарь синонимов
шаблон - а, м. échantillon m. > гол. schampelioen> нем. Schablone образец. 1. Приспособление в виде лекала, патрона и т. д., по которому изготовляют одинаковые изделия. БАС 1. Деки <скрипок> вырезываются из толстой доски по шаблону. Куст. пром … Исторический словарь галлицизмов русского языка
Муж., франц. трафаретка, патрон, лекало или кружало: вырезной образец узора и вообще гнутых обводов. Шаблончик на карниз. Шаблон, для кладки свода, для шахтной или иной печи. Отливка вещей по шаблону. Шаблонный чертеж, лекальный, во всю величину… … Толковый словарь Даля
В информатике формализованный кадр изображения, выводимый на экран дисплея и содержащий тексты запросов к пользователю и специальные поля, предназначенные для занесения туда ответов пользователя (текстов или чисел). См. также: Диалоговые режимы… … Финансовый словарь
шаблон - ШАБЛОН, а, м. Половой акт в традиционной позе. шаблон гнать … Словарь русского арго
шаблон - ШАБЛОН, стандарт, трафарет, штамп … Словарь-тезаурус синонимов русской речи
- (от нем. Schablone образец модель),..1) пластина с вырезами, очертания которых соответствуют контуру изделия и т. п2)] Чертеж детали (архитектурной, строительной), выполненный в натуральную величину3) В переносном смысле образец, штамп, которому… … Большой Энциклопедический словарь
- (лекало), форма (матрица) или образец для изготовления определенного количества точных копий объекта. Обычно вырезается из тонких пластин (листов) металла, дерева или бумаги … Научно-технический энциклопедический словарь
ШАБЛОН, шаблона, муж. (нем. Schablone). 1. Пластина с профилем, контуром предмета или иное приспособление, являющееся образцом при изготовлении изделий (тех.). 2. перен. Готовый образец, которому слепо подражают; избитая форма выражения мысли… … Толковый словарь Ушакова
ШАБЛОН, а, муж. 1. Пластина с вырезами, по контуру к рых изготовляются чертежи или какие н. изделия, лекало (во 2 знач.) (спец.). Чертить, кроить по шаблону. 2. перен. Общеизвестный, избитый образец, трафарет (в 3 знач.), к рому подражают.… … Толковый словарь Ожегова
Шаблон - это документ, используемый в качестве образца для создания новых документов. Шаблоны используются для унификации структуры и внешнего вида документов. Шаблон определяет основную структуру документа и содержит настройки документа, такие как элементы списков автотекста и автозамены, макросы, панели инструментов, пользовательские меню и сочетания клавиш, форматирование и стили.
Все новые документы в Microsoft Word создаются на основе шаблонов. По умолчанию при создании нового документа выбирается шаблон Обычный на вкладке Общие . В комплект поставки Word входят десятки шаблонов, которые могут быть использованы для создания документов различных типов.
После запуска Microsoft Word в окне приложения открывается пустой документ, который называется Документ 1. Этот документ основан на шаблоне Обычный (Normal.dot), а текст вводится в стиле Обычный, в котором установлены следующие параметры форматирования: гарнитура шрифта - Times New Roman, кегль (размер шрифта) - 12 пунктов, выравнивание по левому краю, межстрочный интервал - одинарный.
Программа MS Word использует по умолчанию шаблон Normal.dot. Этот шаблон находится в папке C:\Documents and Settings\Irina\Application Data\Microsoft\Шаблоны, где Irina – это Имя пользователя (учетная запись пользователя).
Шаблон может содержать текст и графику, предназначенную для вставки во все созданные на его основе документы.
Если хотите посмотреть, какие готовые шаблоны есть в MS Word, то нужно выполнить команду:
1. Файл – Открыть
2. Справа в открывшемся окне выбрать пункт На моем компьютере в категории Шаблоны.
3. В результате откроется окно шаблонов.
Рисунок 30. Окно шаблонов
Основные виды шаблонов:
Ø общие или глобальные шаблоны (global templates);
Ø шаблоны документов (установленные и пользовательские) или локальные templates.
В приложении Word 2007 используются шаблоны с расширениями:
§.dotm (может содержать макросы или программы), где буква "m" обозначает макрос;
§.dotx (без макросов и программ), где "x" - основанный на XML (Extensible Markup Language).
Общий или глобальный template - это template, загруженный в Microsoft Word в окне "Шаблоны и надстройки", которое открывается командой Разработчик/Шаблон документа. Хранящиеся в общем шаблоне все макросы, элементы списка автотекста, стили, сочетания клавиш, доступны для любого открытого документа, даже если этот Document основан на другом шаблоне.
Любой Document может обратиться к любому компоненту любого шаблона, если этот template загружен пользователем как общий. Но общий template остается загруженным только на время текущего сеанса, а при выходе из приложения Word 2007 и повторном его запуске необходимо перезагрузить вручную. Такие общие templates являются сеансовыми, а не постоянными.
Для автоматической загрузки общего шаблона необходимо поместить его ярлык в папку Startup папки Word, например, C:\Documents and Settings\Админ\Application Data\Microsoft\Word\STARTUP. В этом случае общий template будет постоянным.
Template Normal.dotm (файлы с расширением.dotm позволяют выполнять макросы в файлах) разработан специально для использования в качестве общего или глобального шаблона приложения, который автоматически загружается каждый раз при запуске Word 2007, т.е. является постоянным. Глобальный (общий) template, который называется "Новый Document" и хранится в файле Normal.dotm, является базовым шаблоном. Normal.dotm - это универсальный template для любых типов документов, он всегда загружается и всегда присоединен к открытым документам.
Этот базовый template можно считать своего рода пустым документом (т.е. без содержимого) с заданными свойствами, на основе которого строятся новые Documents или создаются новые templates. Normal.dotm изменять нельзя, так как на нем основаны все документы и все шаблоны документов Word 2007.
Normal.dotm может храниться в каталогах: C:\Documents and Settings\Админ\Application Data\Microsoft\Templates (для ОС Windows XP) или C:\Users\Админ\App Data\Roaming\Microsoft\Templates (для ОС Windows 7). Там же хранятся и пользовательские templates, т.е. созданные пользователем самостоятельно, например My_template.dotm, который является резервной копией Normal.dotm, или Template_document.dotx и Template_document.dot и т.д.
Templates документов - это templates типовых документов с расширением.dotx, которые не содержат макросов и программ (файлы с расширением.dotx и.docx не поддерживают макросы, а значит не подвергаются заражению макровирусами). В Word 2007 набор шаблонов типовых документов называется "Установленные шаблоны". "Установленные шаблоны" устанавливаются при инсталляции Microsoft Office System 2007. Templates документа, например, Стандартный факс, Стандартное письмо, в диалоговом окне "Создание документа", содержат настройки, доступные только для документов, основанных на этом шаблоне.
При создании письма на основе шаблона "Стандартное письмо" могут использоваться как настройки локального шаблона "Стандартное письмо", так и настройки общих шаблонов, но высший приоритет имеет локальный. Кроме того, к документу, созданному на основе какого-либо шаблона, можно присоединить template другого документа. Для этого в окне диалога "Шаблоны и надстройки" надо щелкнуть на кнопке присоединить и выбрать требуемый template.
Установленные шаблоны типовых документов (с расширением.dotx) хранятся в директориях:
§C:\Program Files\Microsoft Office\Templates\1033 - на английском языке;
§C:\Program Files\Microsoft Office\Templates\1049 - на русском языке.
Кроме того, в Word 2007 можно использовать "пользовательские templates", которые отображаются в окне диалога "Создать" на вкладке "Мои шаблоны" (Рис. 2.1.2.1). Шаблоны пользователя - это шаблоны типовых документов, которые пользователь самостоятельно создает и хранит на ПК. Пользовательские шаблоны можно создать на основе шаблонов (глобальных и локальных) или из существующих документов.
Рисунок 31. Окно "Мои шаблоны"
Для создания документа или пользовательского шаблона, необходимо щелкнуть мышью на кнопке "Office" и выбрать команду Создать. Откроется окно диалога "Создание документа", в левой части которого отображены группы шаблонов.
Рисунок 32. Окно "Создание документа"
В группе "Пустые и последние" отображаются пустые шаблоны "Новый документ" (Normal.dotm) и "Новая запись блога". На основе шаблона "Новый документ" можно создать новый Document или пользовательский шаблон. Чтобы начать работу с блогами на базе шаблона "Новая запись блога", необходимо зарегистрировать учетную запись блога. При использовании группы "Установленные шаблоны" для создания документа или пользовательского шаблона открывается набор (коллекция эскизов) шаблонов типовых документов.
В случае применения группы "Мои шаблоны" для создания документа или пользовательского шаблона открывается окно Создать (Рис. 2.1.2.1), в котором можно выбрать пустой "Новый документ" (Normal.dotm) или "пользовательские templates".
При создании документа или пользовательского шаблона на основе группы "Из существующего документа" открывается окно "Создание из имеющегося документа", в котором требуется выбрать соответствующий Document для образца; Раздел Microsoft Office Online. При наличии доступа в Интернет можно загрузить дополнительные шаблоны с web-узла Microsoft Office Online для создания документа или пользовательского шаблона.
При создании пользовательских шаблонов целесообразно сохранять их в папке Надежные шаблоны (Templates) в формате dotx.
Форма
Форма - это документ с незаполненными областями, в которые вводятся данные. Формы напоминают обыкновенные бумажные бланки. На любом бланке, кроме постоянного текста есть пустые графы, куда нужно вписывать конкретные сведения. Подобные графы - поля предусмотрены и в электронных формах: текстовое поле, поле-флажок, поле-список.
Чтобы создать форму в приложении Microsoft Word, можно воспользоваться шаблоном, добавив в него элементы управления содержимым, в том числе флажки, текстовые поля, элементы управления "выбор даты" и раскрывающиеся списки. Затем другие пользователи смогут заполнить эту форму в приложении Word на своих компьютерах. В расширенном сценарии любые элементы управления содержимым, добавляемые в форму, также могут быть связаны с данными.
Форму можно создать на основе шаблона. На сайте Office.com доступны разнообразные шаблоны форм.
Примечание . Форму с элементами управления содержимым можно распечатать, однако поля вокруг них напечатаны не будут.
Основные преимущества электронных форм в том, что они сокращают время работы с документами, находятся в безопасном месте и не занимают много памяти.