File tree 2 files changed +39
-39
lines changed
2 files changed +39
-39
lines changed Original file line number Diff line number Diff line change @@ -1538,10 +1538,10 @@ public class ArrayIsNotIterable {
1538
1538
< ! -- The Adapter Method Idiom -- >
1539
1539
### 适配器方法惯用法
1540
1540
1541
- 如果现在有一个 ** Iterable** 类,你想要添加一种或多种在 *for-in* 语句中使用这个类的方法,应该怎么做呢?例如,你希望可以选择正向还是反向遍历一个单词列表。如果直接继承这个类,并覆盖 `iterator ()` 方法,则只能替换现有的方法,而不能实现遍历顺序的选择。
1541
+ 如果现在有一个 ** Iterable** 类,你想要添加一种或多种在 *for-in* 语句中使用这个类的方法,应该怎么做呢?例如,你希望可以选择正向还是反向遍历一个单词列表。如果直接继承这个类,并重写 `iterator ()` 方法,则只能替换现有的方法,而不能实现遍历顺序的选择。
1542
1542
1543
1543
一种解决方案是所谓*适配器方法*(Adapter Method)的惯用法。“适配器”部分来自于设计模式,因为必须要提供特定的接口来满足 *for-in* 语句。如果已经有一个接口并且需要另一个接口时,则编写适配器就可以解决这个问题。
1544
- 在这里,若希望在默认的正向迭代器的基础上,添加产生反向迭代器的能力,因此不能使用覆盖 ,相反,而是添加了一个能够生成 **Iterable** 对象的方法,该对象可以用于 *for-in* 语句。这使得我们可以提供多种使用 *for-in* 语句的方式:
1544
+ 在这里,若希望在默认的正向迭代器的基础上,添加产生反向迭代器的能力,因此不能使用重写 ,相反,而是添加了一个能够生成 **Iterable** 对象的方法,该对象可以用于 *for-in* 语句。这使得我们可以提供多种使用 *for-in* 语句的方式:
1545
1545
1546
1546
```java
1547
1547
// collections/AdapterMethodIdiom.java
You can’t perform that action at this time.
0 commit comments