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

标签 java adapter mapper

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

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

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

有区别还是它们是同一事物的不同名称?

最佳答案

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

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

cat 实例仍然存在于此,不会创建新的“dog 实例”,而是创建 DogAdapter 实例并将 cat 对象“适配”到 Dog 接口(interface)。

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

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

关于java - 映射器是适配器模式的一个版本吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42120946/

相关文章:

java - SurfaceView滚动时闪烁

android - 如何使用ListRowPresenter的setRowViewSelected

hadoop - 为什么映射器的运行时间应该超过1分钟?

android - 平板电脑中的 Recyclerview 在 Lollipop 或更低版本的设备上被多次调用

hadoop - Hadoop MapReduce映射器任务从HDFS或S3读取输入文件所花费的时间

php - 仅将 PHP setter 用于类型安全是否有意义?

java - Maven改变不同配置文件的插件顺序

java - 如何在Atmosphere中实现TrackMessageSizeFilter?

java - 应用程序目录必须存在并且是一个目录(Java + Eclipse + GAE)

c++ - C++ 标准中的适配器是什么?它与适配器设计模式有何关系?