Хорошо известно, как создать адаптер, когда методы адаптера выглядят одинаково, за исключением имени.
Например,
http://sourcemaking.com/design_patterns/adapter/cpp/2
где ни один из «doThis», «doThat» и «doOther» не имеет входных данных. Однако что если разные методы имеют разное количество входных параметров?
Спасибо
Пример, приведенный в связанном документе, описывает использование шаблона адаптера в ситуации, когда изменение носит чисто синтаксический характер. Ситуация, подразумеваемая вашим вопросом, содержит семантическое изменение, то есть метод adaptee не предоставляет точно такую же услугу, как то, что интерфейс адаптера «обещает» предоставить формально. Это означает, что для адаптивного пользователя необходимо каким-то образом заключить нечто большее, чем простое изменение имени: необходимо выполнить определенную работу, чтобы построить недостающие параметры или преобразовать существующие параметры в параметры, требуемые адаптивным лицом.
Если к каждому новому адаптеру предъявляются разные требования, то каждый адаптер должен содержать специальный код адаптации. Там не так много, чтобы сделать общий шаблон из этой ситуации. Единственный простой случай — это тривиальный случай, когда все необходимые параметры не зависят от переданных и могут быть вычислены один раз для всех перед созданием адаптера, что позволяет адаптеру просто std::bind
эквивалент.
Других решений пока нет …