这是情况。我有以下伪类:
class Agent:
def __init__(self):
self.blah = whatever
self.boo = thingy
def doA(self, transport):
res = transport.doX(self.blah)
def doB(self, transport):
res = transport.doY(self.boo)
class Transport:
def __init__(self):
self.bah = weee
def doX(self, item):
#.. do some other stuff here
def doY(self, item):
#.. do some more stuff here
现在,我的问题是 - 我应该将我的传输对象传递给需要它的方法的代理方法,还是应该简单地将传输对象传递给代理构造函数并从方法中调用它?IE
transport = Transport()
agent = Agent(transport)
class Agent:
def __init__(self, transport):
self.blah = whatever
self.transport = transport
def doA(self):
res = self.transport.doX(self.blah)
我将 Transport 移到它自己的班级的原因是:
1) 代理实例可以共享相同的传输对象 - 即:我只需要一个传输对象用于一组代理。我可以有多个传输(一个用于agentA..N,另一个用于agentO..Z)。
2) 传输包含将代理列表作为参数的方法。例如,给定代理对象列表,它可以对代理运行并发通信测试。
但是,代理本身有时需要在传输中设置的属性(SSL 证书的位置等),以便在代理类中有意义的一些方法(远程重新启动代理等)。
我是否应该采用需要代理列表的方法并将它们移动为 Transport 的类方法,然后在包含 Transport 实例的 Agent 对象中创建一个属性?我是否应该继续我正在做的事情,只需要将 Transport 对象传递给某些 Agent 对象方法?我应该以我没有看到的某种方式重构这一切吗?
任何有用的意见将不胜感激。