Skip to main content

Posts

Showing posts from May, 2013

Adapter / decorator / proxy / wrapper

Очень похожи. Все создают "промежуточный" объект, который "более удобен" для клиента. Но еще интереснее то, что банда четырех и про Adapter и про Decorator говорит: "известен также под именем Wrapper". Так в чем же разница? 1. Adapter (Адаптер). Нужно использовать компоненты, интерфейс которых не совпадает с "нашими" интерфейсами. Нужен "переходник", который интерфейс компонента приведет к тому виду, с которым нам удобно работать. Например, есть сторонняя библиотека и есть наша система, работающая с иными интерфейсами. Изменить библиотеку мы не можем, менять свою реализацию не хотим (а вдруг потом будет другая библиотека, что тогда?). 2. Wrapper (Обёртка). Есть функциональность, которая не является объектом, например, библиотека. Хотим сделать из нее что-то объектное. 3. Decorator (Декоратор). Хотим добавить функциональность к объекту, но не наследовать. Похоже на servlet filter. Цель: добавить в класс новое поведение. 4...