$foo = new B($this);
コードが、残念ながら私のニーズと一致しない場合でも、凝集に固執すると思います。親オブジェクトのプロパティにアクセスする他の方法はありますか?
私は理由を説明しようとします。私たちはゲームソフトを書いており、いくつかのクラスは非常に「珍しい」依存関係を持ち、お互いにさまざまな影響を与えます。そのため、コードは時にはすべてのインスタンスで親にリンクせずに(時には異なるコンテクストの複数の親でさえ、SquadはBattleやUserなどに属しています)、ほとんどサポートできません。
リンクが私を満たさない理由。クライアント側の出力を生成するとき、私はXMLでオブジェクトを直列化することを使用します。それは親にそれらのリンクのような再帰的な参照を満たすまで非常にうまく動作します。私はそれらを保護させることができますが、その後彼らはその使用法を緩める(ダミー例)
$this->squad->battle->getTeam($tid)->getSquad($sqid)->damageCreature(...);
他の方法 - すべての直列化可能クラスの直列化メソッドを実装し、このようにシリアライザの内側にそれを呼び出す:
$obj->toXML($node);
$this->appendChild($node);
が、それは、書き込むとサポートするために多くのものです!そして、時には、シリアライザのオブジェクトを動的に(トラフィックが少なくて)生成します。
私は、ハッキングについても考えています。シリアライザを特定のクラスのいくつかのプロパティを無視するように「教える」ということです))。うわー...悪い考え...
これは長い議論ですが、レジストリとオブザーバーは合わないと思います。他のアイデアはありますか?
出典
2009-05-19 16:51:35
Jet
ありがとうございます。私の特定のケースでは、登録パターンは実際に適用されます。 (クラスAはいくつかのデータベースリンクを開き、設定情報をBクラスや他のクラスに渡さなければなりません)。 –