Skip to content

Commit f89b4c6

Browse files
committed
Merge pull request yidao620c#18 from slideclick/patch-1
vistor模式通常译为访问者模式
2 parents 5dc1db9 + 6c6bce0 commit f89b4c6

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

source/c08/p21_implementing_visitor_pattern.rst

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
============================
2-
8.21 实现观察者模式
2+
8.21 实现访问者模式
33
============================
44

55
----------
@@ -60,7 +60,7 @@
6060
t4 = Add(Number(1), t3)
6161
6262
这样做的问题是对于每个表达式,每次都要重新定义一遍,有没有一种更通用的方式让它支持所有的数字和操作符呢。
63-
这里我们使用观察者模式可以达到这样的目的
63+
这里我们使用访问者模式可以达到这样的目的
6464

6565
.. code-block:: python
6666
@@ -159,7 +159,7 @@
159159
讨论
160160
----------
161161
刚开始的时候你可能会写大量的if/else语句来实现,
162-
这里观察者模式的好处就是通过 ``getattr()`` 来获取相应的方法,并利用递归来遍历所有的节点:
162+
这里访问者模式的好处就是通过 ``getattr()`` 来获取相应的方法,并利用递归来遍历所有的节点:
163163

164164
.. code-block:: python
165165
@@ -184,12 +184,12 @@
184184
def do_HEAD(self, request):
185185
pass
186186
187-
观察者模式一个缺点就是它严重依赖递归,如果数据结构嵌套层次太深可能会有问题,
187+
访问者模式一个缺点就是它严重依赖递归,如果数据结构嵌套层次太深可能会有问题,
188188
有时候会超过Python的递归深度限制(参考 ``sys.getrecursionlimit()`` )。
189189

190190
可以参照8.22小节,利用生成器或迭代器来实现非递归遍历算法。
191191

192-
在跟解析和编译相关的编程中使用观察者模式是非常常见的
192+
在跟解析和编译相关的编程中使用访问者模式是非常常见的
193193
Python本身的 ``ast`` 模块值的关注下,可以去看看源码。
194194
9.24小节演示了一个利用 ``ast`` 模块来处理Python源代码的例子。
195195

0 commit comments

Comments
 (0)