私はお互いに結合されたいくつかのクラスを持っており、その中に冗長性を最小限に抑える設計をしたいと思います。合成クラスを持つ結合クラスの冗長計算を保存する方法
デザインは以下の通りです。クラスは、D
- Cである
- AC、AD:(A、C)と(A、D)の組成物は全てのクラスが同じで初期化さ
各クラスはいくつかの計算を実行し、独自の結果を保存します。具体的には、ユーザーはA、AC、ADのインスタンスを作成しますが、CとDは作成しません。つまり、A、AC、ADは同様のもので統一されたインターフェイスを持ちます。ここで論理は、たとえば、Aの結果をAから除外しない限り、Cの結果は有用ではないということです。ユーザがAとAC(またはACおよびAD、または他の組み合わせ)のインスタンスを作成する場合、Aの計算が複数回行われ、現在の設計で
class A(object):
def __init__(self, data):
# some work
def postproc(self, *args):
# some real work
self.result = ..
class AC(object):
def __init__(self, data):
self.a = A(data)
self.c = C(data)
def postproc(self, *args):
result_a = self.a.postproc(*args[:3])
result_c = self.c.postproc(*args[3:])
self.result = exclude_c_from_a(result_a, result_c)
を次のようにいくつかのモックアップコードです。冗長な計算をしたくない、デザインをどのように変更する必要がありますか?
もう少し詳しく説明します。異なる初期データを持つAの複数のインスタンスもあります。したがって、Aインスタンスが1つしかないことを保証するためにシングルトンを使用することはできません。
コードを投稿してください。 – James
あなたが探しているように聞こえるのは、内部キャッシングメカニズムを備えたファンクタです –