擅长:python、mysql、java
<p>做调度员的python方法是使用字典。请记住,在Python中,函数是一级对象,因此可以是dict中的值</p>
<pre><code>class IAmAReallyComplicatedBeast(object):
def something(self, other_stuff):
data = self.obtain_data()
dispatcher = {
'something_mundane': self.do_foo,
'something_special': self.do_bar,
'something_really_special': self.do_baz
}
self.categorizer.handleData(data, dispatcher)
class Categorizer(object):
'''Determines which category data is in.
There may be multiple variants of this class'''
def handleData(self, data, callback):
if self.somethingReallySpecial(data):
dispatcher['something_really_special'](data)
</code></pre>
<p>注意:我知道你没有提出这一点,但是内部类实际上是非Pythonic的:内部类没有获得对外部类的特殊访问权,并且不建议这样做。你知道吗</p>