В каких условиях было бы лучше использовать либо шаблон адаптера, либо декоратор?Каковы различия между шаблонами Decorator и Adapter?
Примеры из реальных программ приветствуются.
В каких условиях было бы лучше использовать либо шаблон адаптера, либо декоратор?Каковы различия между шаблонами Decorator и Adapter?
Примеры из реальных программ приветствуются.
у вас есть эти ссылки с УЯМОМ кодом диаграммы и объяснить
адаптер: http://www.dofactory.com/Patterns/PatternAdapter.aspx
=> Совпадение интерфейсов разных классов
декоратор: http://www.dofactory.com/Patterns/PatternDecorator.aspx
=> Добавить обязанности к объектам динамически
Я не думаю, что они могут использоваться как взаимозаменяемые.
Адаптер изменяет интерфейс объекта, чтобы адаптировать его к другому интерфейсу. Декоратор поддерживает интерфейс при добавлении функций.
public class Foo
{
}
public class Bar
{
}
// adapter takes Foo and pretends it is Bar
public class FooBarAdapter : Bar
{
public FooBarAdapter(Foo foo)
{
}
}
// decorator maintains the interface and adds features
public class FooDecorator : Foo
{
public FooDecorator(Foo foo)
{
}
}
Хм .. Я думал, что эти шаблоны могут быть используется взаимозаменяемо. Спасибо за образец! –
Кто-то ввел вас в заблуждение. Адаптер и декоратор не связаны, и я едва мог подумать о сценарии, в котором эти два могут быть применены друг против друга. –
@WiktorZychla Я думаю, проблема в том, что оба эти шаблона используют композицию для инкапсуляции объекта-члена, поэтому люди могут подумать, что они похожи. Ключевым моментом здесь является, конечно, интерфейс, который открывается с использованием этого объекта. – goelakash
Я был там. спасибо! :) Не могли бы вы рассказать мне, пожалуйста, где лучше использовать адаптер и где другой шаблон? (я имею в виду в «реальной жизни») –
рад помочь вам, если вы хотите связаться с двумя системами, используйте адаптер, чтобы адаптировать коммуникацию, но декоратор, чтобы добавить functinnality к вашему объекту. –