使用适配器模式而不是将代码从枚举器重构为迭代器
Use Adapter Pattern rather than refactor code from Enumerator to Iterator
我阅读了第 248 页的 Head First Design Patterns 2004,了解现实世界中的适配器模式。
它谈到了使用 Enumerator 的旧 Java 应用程序,但现在它变成了 遗留代码 ,Java 不再维护它不再。
解决方案是使用 适配器模式 将 Enumerator 与 Iterator 相适应(新的 Java 版本).
他们为什么不直接将代码从枚举器重构(编辑)为迭代器而不是使用模式?
我想我找到了为什么首选适配器模式而不是从枚举器重构为迭代器的答案。
- 迭代器是非线程安全的
- 枚举器是线程安全的
Java Enumeration vs Iteration vs ForLoop
首先,我想自由地指出Enumeration is not yet deprecated . You can use Enumeration and Iterator。您使用的措辞有点误导(至少对我而言)。
本书建议的是,在某些 遗留 API 中,它们可能会公开 Enumeration 接口而不是 Iterator 接口。例如,您在程序中使用的库包含一个 return Enumeration<T>
的方法,而遗留的 class 根本没有为您提供获取迭代器的方法。
在这种情况下,如果您想让迭代器可用于您的程序,您可能需要创建一个适配器 class。您可以编辑遗留库的代码吗?是的,当然可以,但是修改您正在使用的外部库代码总是一个坏主意。您可以查看此主题:
我阅读了第 248 页的 Head First Design Patterns 2004,了解现实世界中的适配器模式。
它谈到了使用 Enumerator 的旧 Java 应用程序,但现在它变成了 遗留代码 ,Java 不再维护它不再。
解决方案是使用 适配器模式 将 Enumerator 与 Iterator 相适应(新的 Java 版本).
他们为什么不直接将代码从枚举器重构(编辑)为迭代器而不是使用模式?
我想我找到了为什么首选适配器模式而不是从枚举器重构为迭代器的答案。
- 迭代器是非线程安全的
- 枚举器是线程安全的
Java Enumeration vs Iteration vs ForLoop
首先,我想自由地指出Enumeration is not yet deprecated . You can use Enumeration and Iterator。您使用的措辞有点误导(至少对我而言)。
本书建议的是,在某些 遗留 API 中,它们可能会公开 Enumeration 接口而不是 Iterator 接口。例如,您在程序中使用的库包含一个 return Enumeration<T>
的方法,而遗留的 class 根本没有为您提供获取迭代器的方法。
在这种情况下,如果您想让迭代器可用于您的程序,您可能需要创建一个适配器 class。您可以编辑遗留库的代码吗?是的,当然可以,但是修改您正在使用的外部库代码总是一个坏主意。您可以查看此主题: