Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Описание шаблона проектирования Adapter
Применение шаблона Adapter позволяет организовать совместную работу классов с несовместимыми интерфейсами". Таким образом, если нас не устраивает интерфейс какого-либо объекта, мы можем создать для него новый интерфейс с помощью шаблона Adapter. При этом мы создаем для исходного класса оболочку, которая обладает нужным интерфейсом. Поясним принцип применения шаблона на примере. Допустим существует класс TNewClass, определенный следующим образом: class TNewClass { Таким образом, интерфейс данного класса содержит функции для считывания и записи неких данных. Определение класса TOldClass: class TOldClass { Если бы мы просто заменили TOldClass на TNewClass, нам пришлось бы изменять весь код, который ранее взаимодействовал с классом TOldClass. Чтобы избежать этого, мы создадим оболочку для класса TNewClass: class TNewClassWrapper { Теперь мы можем использовать объекты класса TNewClassWrapper вместо объектов класса TOldClass, поскольку они имеют одинаковый интерфейс.
Часто шаблон Adapter используется для обеспечения полиморфного поведения объекта. Допустим наш класс TNewClass необходимо сделать производным от класса TBaseClass. В этом случае мы вынуждены создавать оболочку для TNewClass, чтобы иметь возможность заместить виртуальные функции базового класса. class TBaseClass { class TDerivedClass: public TBaseClass { Если класс, интерфейс которого необходимо изменить, не обладает всей требуемой функциональностью (например, если в классе TNewClass отсутствует метод write()), то можно реализовать недостающие функции непосредственно в классе-оболочке. Date: 2016-07-25; view: 292; Нарушение авторских прав |