File tree Expand file tree Collapse file tree 6 files changed +32
-59
lines changed Expand file tree Collapse file tree 6 files changed +32
-59
lines changed Original file line number Diff line number Diff line change 1+ 《《《 [ 返回首页] ( ../README.md ) <br />
2+ 《《《 [ 上一节] ( ../ch08/04_Maintain_Binary_Compatibility.md )
3+
14## 设计模式
25
3- 本章回顾了五种着名的设计模式 - 访问者,解释器,函数,策略和主题观察者,并展示了他们如何利用泛型。函数模式概括了比较器接口的思想。 其他四种模式在 ` Gamma ` ,` Helm ` ,` Johnson ` 和 ` Vlissides ` (` Addison-Wesley ` )的开创性设计模式中描述。
6+ 本章回顾了五种着名的设计模式 - 访问者,解释器,函数,策略和主题观察者,并展示了他们如何利用泛型。函数模式概括了比较器接口的思想。 其他四种模式在 ` Gamma ` ,` Helm ` ,` Johnson ` 和 ` Vlissides ` (` Addison-Wesley ` )的开创性设计模式中描述。
7+
8+ 《《《 [ 下一节] ( 01_Visitor.md ) <br />
9+ 《《《 [ 返回首页] ( ../README.md )
Original file line number Diff line number Diff line change 1+ 《《《 [ 返回首页] ( ../README.md ) <br />
2+ 《《《 [ 上一节] ( 00_Design_Patterns.md )
3+
14## 游客
25
36通常情况下,数据结构由案例分析和递归定义。例如,` Tree<E> ` 类型的二叉树是以下之一:
172175 }
173176 }
174177```
175-
176-
177-
178-
178+ 《《《 [ 下一节] ( 02_Interpreter.md ) <br />
179+ 《《《 [ 返回首页] ( ../README.md )
Original file line number Diff line number Diff line change 1+ 《《《 [ 返回首页] ( ../README.md ) <br />
2+ 《《《 [ 上一节] ( 01_Visitor.md )
3+
14## 翻译员
25
36树的一种用法是用编程语言表示表达式。如前一节所述,表达式类型由一个抽象类表示,每种表达式都由一个子类表示。有一种抽象方法来评估一个表达式,并且每个子类都根据相应的表达式实现该方法。
1619
1720` Java ` 中的泛型受到功能语言(如 ` ML ` 和 ` Haskell ` )中类似功能的启发。通用的解释器模式很有趣,因为它展示了一种Java中的泛型比其他语言中的泛型更强大的方式。虽然最近的 ` Haskell ` 版本包含了一个实验性特征,即通用抽象数据类型,它专门为支持这种模式而设计,但在 ` ML ` 和 ` Haskell ` 的标准版本中实现这种模式是不可能的。
1821
19-
20-
22+ 《《《 [ 下一节 ] ( 03_Function.md ) < br />
23+ 《《《 [ 返回首页 ] ( ../README.md )
Original file line number Diff line number Diff line change 1+ 《《《 [ 返回首页] ( ../README.md ) <br />
2+ 《《《 [ 上一节] ( 02_Interpreter.md )
3+
14## 功能
25
36函数模式将任意方法转换为对象。函数和相应方法之间的关系类似于 ` Comparator ` 和 ` compareTo ` 方法之间的关系。
103106
104107该异常会引发两次,一次是在应用 `forName` 时,一次是在应用 `getRunMethod` 时引发的。
105108
106-
107-
108-
109-
110-
111-
112-
113-
114-
115-
116-
117-
118-
119-
120-
121-
122-
123-
124-
125-
126-
127-
128-
129-
130-
131-
132-
133-
134-
135-
109+ 《《《 [下一节](04_Strategy.md) <br/>
110+ 《《《 [返回首页](../README.md)
Original file line number Diff line number Diff line change 1+ 《《《 [ 返回首页] ( ../README.md ) <br />
2+ 《《《 [ 上一节] ( 03_Function.md )
3+
14## 策略
25
36策略模式用于将方法与对象分离,使您可以提供许多可能的方法实例。我们对战略模式的讨论说明了许多面向对象程序中的结构化技术,即并行类层次结构。我们将通过考虑纳税人如何应用不同的税收策略来说明战略模式。纳税人将会有一个等级制度,并且有一个相关的税收策略等级制度。例如,有一个适用于任何纳税人的默认策略。纳税人的一个子类是信任,而默认策略的一个子类只适用于信任。
226229
227230我们将在下一节看到递归类型参数的另一个例子,它应用于两个相互递归的类。 不过,虽然 `getThis` 技巧通常很有用,但我们不会要求它。
228231
229-
230-
231-
232-
233-
234-
232+ 《《《 [下一节](05_Subject-Observer .md) <br/>
233+ 《《《 [返回首页](../README .md)
Original file line number Diff line number Diff line change 1+ 《《《 [ 返回首页] ( ../README.md ) <br />
2+ 《《《 [ 上一节] ( 04_Strategy.md )
3+
14## 主题观察者
25
36我们用一个更加扩展的例子来完成,说明通用的 ` Subject-Observer ` 模式。与策略模式一样,` Subject-Observer ` 模式使用并行类层次结构,但这次我们需要两个具有相互递归边界的类型变量,一个代表特定类型的主体,一个代表特定类型的观察者。这是我们的第一个带有相互递归边界的类型变量的例子。
@@ -220,19 +223,5 @@ CModel类有一个方法来设置和获取给定货币的汇率和价值。汇
220223
221224泛型最重要的用途之一是集合框架,在本书的下一部分,我们将向您展示如何有效地使用此框架并提高您作为 ` Java ` 程序员的工作效率。
222225
223-
224-
225-
226-
227-
228-
229-
230-
231-
232-
233-
234-
235-
236-
237-
238-
226+ 《《《 [ 下一节] ( ../ch10/00_Collections.md ) <br />
227+ 《《《 [ 返回首页] ( ../README.md )
You can’t perform that action at this time.
0 commit comments