2013-07-18 3 views

ответ

5

у вас есть эти ссылки с УЯМОМ кодом диаграммы и объяснить

адаптер: http://www.dofactory.com/Patterns/PatternAdapter.aspx

=> Совпадение интерфейсов разных классов

декоратор: http://www.dofactory.com/Patterns/PatternDecorator.aspx

=> Добавить обязанности к объектам динамически

+0

Я был там. спасибо! :) Не могли бы вы рассказать мне, пожалуйста, где лучше использовать адаптер и где другой шаблон? (я имею в виду в «реальной жизни») –

+0

рад помочь вам, если вы хотите связаться с двумя системами, используйте адаптер, чтобы адаптировать коммуникацию, но декоратор, чтобы добавить functinnality к вашему объекту. –

11

Я не думаю, что они могут использоваться как взаимозаменяемые.

Адаптер изменяет интерфейс объекта, чтобы адаптировать его к другому интерфейсу. Декоратор поддерживает интерфейс при добавлении функций.

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) 
    { 
    } 
} 
+0

Хм .. Я думал, что эти шаблоны могут быть используется взаимозаменяемо. Спасибо за образец! –

+1

Кто-то ввел вас в заблуждение. Адаптер и декоратор не связаны, и я едва мог подумать о сценарии, в котором эти два могут быть применены друг против друга. –

+1

@WiktorZychla Я думаю, проблема в том, что оба эти шаблона используют композицию для инкапсуляции объекта-члена, поэтому люди могут подумать, что они похожи. Ключевым моментом здесь является, конечно, интерфейс, который открывается с использованием этого объекта. – goelakash

Смежные вопросы