Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns 使用适配器模式,而不是将代码从枚举器重构到迭代器_Design Patterns_Adapter - Fatal编程技术网

Design patterns 使用适配器模式,而不是将代码从枚举器重构到迭代器

Design patterns 使用适配器模式,而不是将代码从枚举器重构到迭代器,design-patterns,adapter,Design Patterns,Adapter,我阅读了第248页的《头先设计模式2004》中关于现实世界中适配器模式的内容 它谈到了一个使用枚举器的旧Java应用程序,但现在它变成了一个遗留代码,Java不再维护它了。 解决方法是使用适配器模式将枚举器与迭代器(新Java版本)相适应 他们为什么不把代码从枚举器重构(编辑)到迭代器,而不是使用模式呢?我想我找到了答案,为什么它是首选的适配器模式,而不是从枚举器重构到迭代器 -迭代器是非线程安全的 -枚举器是线程安全的 首先,我想指出的是,它还没有被弃用。你可以自由使用。你使用的措辞有点误导(

我阅读了第248页的《头先设计模式2004》中关于现实世界中适配器模式的内容
它谈到了一个使用枚举器的旧Java应用程序,但现在它变成了一个遗留代码,Java不再维护它了。
解决方法是使用适配器模式枚举器迭代器(新Java版本)相适应


他们为什么不把代码从枚举器重构(编辑)到迭代器,而不是使用模式呢?

我想我找到了答案,为什么它是首选的适配器模式,而不是从枚举器重构到迭代器
-迭代器是非线程安全的
-枚举器是线程安全的

首先,我想指出的是,它还没有被弃用。你可以自由使用。你使用的措辞有点误导(至少对我来说)

这本书建议的是,在一些遗留API中,它们可能公开枚举接口,但不公开迭代器接口。例如,您正在程序中使用一个库,其中包含一个将返回
枚举的方法,而该遗留类根本不提供获取迭代器的方法

在本例中,如果希望程序有一个迭代器,可能需要创建一个适配器类。您可以编辑旧库的代码吗?是的,当然,但是修改您正在使用的外部库代码总是一个坏主意。您可以查看此线程: