0

当被适配者的方法除了名称之外看起来相同时,如何构建适配器是众所周知的。

例如,

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

其中“doThis”、“doThat”和“doOther”都没有输入。但是,如果不同的方法有不同数量的输入参数怎么办?

谢谢

4

1 回答 1

1

链接文档中给出的示例描述了在更改纯语法的情况下使用适配器模式。您的问题暗示的情况包含语义变化,即适配器方法不提供与适配器接口“承诺”正式提供的完全相同的服务。这意味着适配者必须以某种方式包装,而不仅仅是简单的名称更改:必须围绕它完成一些工作以构建缺失的参数或将现有参数转换为适配者所需的参数。

如果每个新的适配者有不同的要求,那么每个适配器必须包含 ad-hoc 适配代码。从这种情况中找出一种常见的模式并没有太多可以做的事情。唯一简单的情况是微不足道的情况,当所有需要的参数都独立于传递的参数时,并且可以在构造适配器之前一劳永逸地计算,因此允许适配器作为简单的std::bind等价物。

于 2013-05-31T01:53:47.850 回答