映射器是适配器模式的一个版本吗

Is a mapper a version of the adapter pattern

我一直在努力了解适配器模式,在所有模式中,我最难想象它的用途。

我想我明白实现的是什么,对我来说就是将一个对象转换为另一个接口,以便客户端可以使用它。

在我看到的例子中它们是有道理的,但我觉得我可以使用一个映射器实现同样的效果,该映射器获取一个对象并将其属性(可能也应用一些逻辑)映射到所需的对象类型,因此真实改为使用对象。

是否有区别,或者它们是同一事物的不同名称?

不要将适配器视为新对象的创建者(如 Mapper),而是将其视为接口转换器。

Mapper m = new Mapper()
Dog dog = (Dog) m.mapRow(resultSet); // creating new object

cat 实例仍然存在于此,没有创建新的 'dog instance',而是创建了 DogAdapter 实例并且 'adapts' 将 cat 对象添加到 Dog 接口。

Cat cat = new Cat("Felix");
Dog dog = new DogAdapter(cat); // cat  still exists
dog.bark(); // yields 'meow'

这些显然是人为的示例,但希望它们能帮助您更好地理解。