адаптер — адаптер C ++ с различными интерфейсами, где интерфейсы могут иметь различный тип / количество входных параметров

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

Например,

http://sourcemaking.com/design_patterns/adapter/cpp/2

где ни один из «doThis», «doThat» и «doOther» не имеет входных данных. Однако что если разные методы имеют разное количество входных параметров?

Спасибо

0

Решение

Пример, приведенный в связанном документе, описывает использование шаблона адаптера в ситуации, когда изменение носит чисто синтаксический характер. Ситуация, подразумеваемая вашим вопросом, содержит семантическое изменение, то есть метод adaptee не предоставляет точно такую ​​же услугу, как то, что интерфейс адаптера «обещает» предоставить формально. Это означает, что для адаптивного пользователя необходимо каким-то образом заключить нечто большее, чем простое изменение имени: необходимо выполнить определенную работу, чтобы построить недостающие параметры или преобразовать существующие параметры в параметры, требуемые адаптивным лицом.

Если к каждому новому адаптеру предъявляются разные требования, то каждый адаптер должен содержать специальный код адаптации. Там не так много, чтобы сделать общий шаблон из этой ситуации. Единственный простой случай — это тривиальный случай, когда все необходимые параметры не зависят от переданных и могут быть вычислены один раз для всех перед созданием адаптера, что позволяет адаптеру просто std::bind эквивалент.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector