Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Название и классификация паттерна
Мост - паттерн, структурирующий объекты. (Структурные паттерны). Назначение Отделить абстракцию от ее реализации так, чтобы то и другое можно было изменять независимо. Мотивация Если для некоторой абстракции возможно несколько реализаций, то обычно применяют наследование. Абстрактный класс определяет интерфейс абстракции, а его конкретные подклассы по-разному реализуют его. Но такой подход не всегда обладает достаточной гибкостью. Наследование жестко привязывает реализацию к абстракции, что затрудняет независимую модификацию, расширение и повторное использование абстракции и ее реализации. При этом часто упрощается иерархия классов, т.к. применение данного шаблона в каком-то смысле выступает в качестве альтернативы наследованию классов. Рассмотрим один пример. Пусть мы проектируем систему, управляющую приемом экзаменов. При этом имеет значение, сдается экзамен письменно или устно. Если экзамен принимается по трем предметам (и по каждому предмету возможен прием экзамена обоими способами), то условная схема нашей системы может выглядеть так: В данном случае полезно использовать шаблон Bridge, суть которого заключается в отделении иерархии объектов от реализации поведения этих объектов. В нашем примере мы должны разделить сами предметы и способы приема экзаменов по этим предметам: Реализация на C++ //базовый класс для способов приема экзамена //реализация различных способов приема class TPassExamWrite: public TPassExam { //базовый класс для предметов //конкретные предметы class TPhysics: public TSubject {
Применимость Используйте паттерн мост, когда: · хотите избежать постоянной привязки абстракции к реализации. Так, например, бывает, когда реализацию необходимо выбирать во время выполнения программы; · и абстракции, и реализации должны расширяться новыми подклассами. В таком случае паттерн мост позволяет комбинировать разные абстракции и реализации и изменять их независимо; · изменения в реализации абстракции не должны сказываться на клиентах, то есть клиентский код не должен перекомпилироваться; Паттерн Bridge · (только для C++!) вы хотите полностью скрыть от клиентов реализацию абстракции. В C++ представление класса видимо через его интерфейс; · число классов начинает быстро расти, как мы видели на первой диаграмме из раздела ≪Мотивация≫. Это признак того, что иерархию следует разделить на две части.
Date: 2016-07-25; view: 356; Нарушение авторских прав |