如果现有一个Iterable类,你想要添加一种或多种在foreach语句中使用这个类的方法,应该怎么做呢?例如,假设你希望可以选择以向前的方向或是向后的方向迭代一个单词列表。如果直接继承这个类,并覆盖iterator()方法,你只能替换现有的方法,而不能实现选择。
一种解决方法是所谓适配器方法的惯用法。在默认的前向的迭代器的基础上,添加产生反向迭代器的能力,我们不能使用覆盖,而是应该添加一个能够产生Iterable对象的方法,该对象可以用于foreach语句。
通过这种方式产生了不同的行为。
如果现有一个Iterable类,你想要添加一种或多种在foreach语句中使用这个类的方法,应该怎么做呢?例如,假设你希望可以选择以向前的方向或是向后的方向迭代一个单词列表。如果直接继承这个类,并覆盖iterator()方法,你只能替换现有的方法,而不能实现选择。
一种解决方法是所谓适配器方法的惯用法。在默认的前向的迭代器的基础上,添加产生反向迭代器的能力,我们不能使用覆盖,而是应该添加一个能够产生Iterable对象的方法,该对象可以用于foreach语句。
通过这种方式产生了不同的行为。