私は自分の問題に適用するのに最適なパターンを探しています。私は私のサービスクラスの機能を定義するインタフェース依存性注入を使用してクラスに機能を追加する
interface NegotiationInterface {
abstract public function resetNegotiation(Negotiation $negotiantion);
}
メインクラスは、それを実装した
public class NegotiationService implements NegotiationInterface {
public function __construct(…Some Dependencies…)
{
….
}
public function resetNegotiation(Negotiation $negotiantion){
…. //All business logic
}
}
NegotiationServiceはDIコンテナの下で登録(symfonyはベース)と、そのサービスIDによってすべてのアプリケーションにわたって使用されています。
$negotiationService = $this->container->get(“negotiation_service”);
$negotiationService->resetNegotiation($negotiation);
、お客様のしかし、いくつかの(ネゴシエーションはクライアント情報が含まれている)、Webサービスを呼び出す私たちの共通のビジネスロジック+例えば、resetNegotiationを呼び出した後、追加のステップが必要です。私はデコレータパターンに達しましたが、DIを使用している最善の方法であるかどうかはわかりません。もしそうなら、私はどのようにDIと一緒に申請しますか?私はクライアントに応じて動的にロードされた余分なステップを持っていたいと思います。
この時点で、あなたの質問には2つの良い答えがあります。それらを見て、あなたを助けた答えがあればそれを受け入れてください。代わりに、答えをより明確にするためにコメントしてください。つまり、私はあなたのケースではうまくいくはずだと思うコンポジットパターンの例を提供しました。 – CKing