ここに状況があります。私はそれを必要とするか、または私は単にエージェントのコンストラクタにTransportオブジェクトを渡すべきである方法のためのエージェント方法に私のトランスポート・オブジェクトを渡すべきである -オブジェクトをメソッドやコンストラクタ経由で他のオブジェクトに渡す?
今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つのトランスポート・オブジェクトが必要です。私は複数のトランスポートを持つことができます(agentsA..Nの場合は1つ、agentsO..Zの場合は別)。
2)トランスポートには、エージェントのリストを引数として取るメソッドが含まれています。例えば、エージェントオブジェクトのリストが与えられている場合、エージェントに対して同時通信テストを実行することができます。
しかし、エージェント自体には、エージェントクラスに属していると分かりやすいメソッド(リモートでエージェントを再起動するなど)のトランスポート(SSL証明書の場所など)に設定されている属性が必要なことがあります。
エージェントのリストを必要とするメソッドを、トランスポートのクラスメソッドに移動し、トランスポートインスタンスを含むエージェントオブジェクトで属性を作成する必要がありますか。私がやっていることを続けて、Transportオブジェクトを特定のAgentオブジェクトメソッドに渡すように要求するだけですか?私はこれを何らかの方法でリファクタリングして、私が見ていないのだろうか?
ご意見、ご協力をお待ちしております。
あなたは壊すために別の層の結合があるように思えます。 –
1)同じエージェントが複数の異なる輸送手段で動作することはありますか? 2)エージェントは、輸送手段が接続される前に有用な何かをすることができますか? 3)輸送機関は、エージェントが接続される前に有用な何かをすることができますか? – max
イグナシオ、私は同意する - しかし、私はそれらをどのように分離するのか分からないので、私はこれを求めている。 – sjmh