2012-02-03 6 views
1

現在、単一責任の原則を満たすために、アプリケーションを複数のクラスにリファクタリングしています。しかし、元のマンモスクラスの多くのメソッドは、ビジネスロジックのための1つの共通の "メタデータ"オブジェクト(クラスプロパティとしてバインドされています)を使用します。例えば他の多くのクラスで共通のオブジェクトが共有されています

:(ケースケースによって基づいて、クラスの特定のメソッドにこのオブジェクトを渡す

  1. if($this->metadata->applyTracking) { 
    // perform tracking logic 
    } 
    

    私は、これらのクラスを分離しています、私は2つのオプションを検討しています多くの場合起こりうる)。

  2. このオブジェクトをクラスプロパティとして追加する(多くのクラスでこのプロパティが注入されます)。
  3. シングルトン(それはグローバルと同じフォールバックを共有するかもしれないので、私はこのアプローチを警戒しています)

取るパス上の任意のアドバイスなどのオブジェクトを作りますか?

答えて

1

コードに継承がある場合は、それを基本クラスのメンバとして割り当て、インスタンスを保護された変数として公開することを検討してください。

シングルトンは、クラスが一度にメモリ内に1つのインスタンスしか持たないかどうか、またはクラスを何度もインスタンス化するかどうかの詳細です。

0

オブジェクトがどのように使用されているかを知ることなく、確かに言うのは難しいですが、必要なプロパティを定義し、アクセスを必要とする後続のクラスでその基本クラスを継承する基本クラスを持つことをお勧めしますそれらのプロパティに。

クイックシフトはパンチに私を打ち負かす、ハハ。

関連する問題