2016-09-05 2 views
3

Не могли бы вы объяснить мне об этом Extension Object Pattern и как он отличается от шаблона адаптера?В чем разница между шаблоном расширения объектов и шаблоном адаптера?

В Интернете есть только несколько ресурсов, которые объясняют шаблон объекта расширения, и большинство из них немного запутывают (по крайней мере, для меня).

Заранее спасибо.

+2

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

ответ

2

Основное различие заключается во время использования:

Вы бы использовать адаптер при разработке программного обеспечения, в тех случаях, вы не можете изменить существующий интерфейс, ввести адаптер.

Шаблон объекта расширения предусматривает такие изменения и позволяет вам, например, расширение уже развернутого программного обеспечения.

Кроме того, из текста вы вывесили:

адаптер поддерживает адаптировать существующий интерфейс. Шаблон объектов расширения поддерживает дополнительные интерфейсы . Объекты расширения и адаптер могут работать вместе в ситуациях , где объект должен быть адаптирован к интерфейсу расширения.

1

Я думаю, что на этой диаграмме вы можете получить более полное представление об объяснении шаблона объектов расширения.

enter image description here

Вы можете видеть, что клиент может

  • Добавить расширение
  • Get (использование) существующее расширение.

При сравнении адаптера клиент скорее придерживается существующего адаптера.

Вы можете увидеть различные extensions, указанные на схеме, как разные adapters.

+0

Итак, шаблон адаптера - клиент привязан к существующему адаптеру. Но в шаблоне объекта расширения - клиент запрашивает адаптер из доступных расширений. Надеюсь, я правильно понял вашу мысль. – CommonMan

+1

@CommonMan да. а также может добавлять/удалять расширения. :)) –

+1

@SupunWijerathne вы также можете реализовать адаптер таким образом, что вы можете добавлять/удалять базовые адаптеры (это было одним из требований моего курса по разработке программного обеспечения в последнее время). –

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