在我看来,这个例子的唯一问题是全局状态的使用。所以别那么做。
  
  
   说真的-当你担心的问题出现时,通过将适当的上下文传递给实干家来解决。在某些情况下,“适当的上下文”可能是几个简单的参数(例如,一个读卡器列表和一个写卡器列表),也可能是一个更复杂的聚合对象(“连接管理器”,可以在引用它的任何人的外部添加和删除连接)。
  
  
   要明确指出你的缺点:
  
  
   - 
    如果行为人有先决条件,则验证它们。如果他们没有被满足,提出一个例外。
   
 
   - 
   
 
   - 
    使Init创建将传递给Doer的东西,而不是创建全局数据。对于嘲弄,通过类也要建立?基本上,使用某种工厂。
   
 
   - 
    如果线程是共享的,您只需要担心它在您的状态下的安全性。如果每个线程都有自己的连接管理器(例如),那么在这个级别没有什么可以锁定的。
   
 
   - 
   
 
  
  
   所以-这样做并不是特别不方便:
  
  class ConnPool:
   def __init__(self, numReaders, readerParams, numWriters, writerParams):
      (your InitFunction with a bunch of self. prepending)
class Doer:
   def __init__(self, connPool, ...):
      if not preconditions:
         raise DoerPreconditionsNotMetError()
      self.connections = connPool
   def Read(self):
      readers, writers = self.connections._READERS, self.connections._WRITERS
      ...