这是情况。我有以下的伪类:将对象传递给其他对象 - 通过方法或构造函数?
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
现在,我的问题是 - 我应该通过我的传送对象为代理方法对于需要或者我应该简单地通过运输对象为代理构造方法并从方法内调用它?即
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)
我搬到交通运输出它自己的类的原因是:
1)代理实例可以共享相同的传输对象 - 即:我只需要1个运输对象为一组代理。我可以有多个传输(一个用于代理A..N,另一个用于代理O..Z)。
2)Transport包含将代理列表作为参数的方法。例如,它可以对代理运行一个并发通信测试,给出一个代理对象列表。
但是,代理本身有时需要在传输中设置的属性(SSL证书的位置等),以便在代理类中有意义的某些方法(远程重新启动代理等)。
我是否应该采用需要代理列表的方法并将它们移动为Transport的类方法,然后在包含Transport实例的代理对象中创建一个属性?我是否应该继续我正在做的事情,并且只需要将传输对象传递给某些代理对象方法?我应该以某种我没有看到的方式来重构这一切吗?
任何有用的意见将不胜感激。
听起来像你有另一层耦合打破。 – 2012-04-06 00:30:05
1)同一个代理是否会与几种不同的传输工作? 2)在任何交通工具连接之前,代理人是否可以做一些有用的事情? 3)在任何代理连接之前,运输工具能做些有用的事情吗? – max 2012-04-06 01:12:00
Ignacio,我同意 - 但我问这是因为我不确定如何去耦合它们。 – sjmh 2012-04-06 15:29:36