适配器设计模式是仅用于改变输入还是改变输入和/或输出?

时间:2017-06-20 15:53:45

标签: design-patterns

  1. 如果我是正确的,适配器设计模式会更改类或 功能有不同的界面。这是否意味着它 改变一个类或函数

    • 仅接受不同类型的输入,或
    • 接受不同类型的输入,和/或提供不同类型的输出?
  2. 我看到“包装器”用于描述更改a的情况 函数提供不同类型的输出。

    “包装”是一种设计模式吗?

    包装器和适配器有什么区别?

  3. 感谢。

2 个答案:

答案 0 :(得分:1)

  1. 适配器更改函数以接受不同的输入和/或以返回不同的输出(即第二个项目符号)。是否需要进行一项或两项更改取决于 adaptee 界面与目标界面的接近程度。如果适应者已经接受目标提供的参数或已经返回目标接受的值,那么只有一半的等式需要进行调整。

  2. Wrapper是一个通用术语,有时用来代替Adapter,但要注意!包装器也是装饰器模式的同义词。

答案 1 :(得分:1)

适配器模式基本上有三个参与者:适配器类,客户端代码,实际逻辑实现类。

Adapter类实现客户端代码接受的接口。它由执行计算或处理逻辑的实际类的对象的实例组成。 为了进行处理,实际的逻辑处理器类需要一些特定格式的输入参数,并根据其实现输出结果。

客户端代码独立于这些输入输出格式,因为它不受任何确认与逻辑处理器类的任何合同的约束。

适配器调整逻辑处理器类,以便客户端代码可以使用其逻辑处理代码。适配器根据客户端的需要向接口确认。与实际逻辑处理器中定义的方法相比,此接口可能具有不同的方法,与通过声明的相应方法相比,每个方法可以具有不同的输入数量或/和参数类型以及不同类型的返回类型。客户端接受的接口。适配器将调整所有这些不同的方法,输入参数和输出返回类型,以便客户端代码可以使用逻辑处理器类。

其他答案中提到的包装器可能用于适配器,但我觉得不应该因为Decorator包装一个对象来增强它的行为,Proxy也包装其底层服务类以提供 sofisticated或者更通用的代理(带有附加检查,备用或附加行为),然后适配器也将逻辑处理器类包装到适应它到客户端代码可接受的接口。此外,适配器将主题包装在不同的接口中,而装饰器和代理将主题包装在同一个接口中。