ストラテジパターンを使用すると、さまざまなexectuteメソッドを異なるパラメータで異なる方法で扱うことができますか?異なるメソッドシグネチャを持つストラテジパターン
3例戦略
public function execute(string $param1, string $param2)
{
// Do something specific to this method
//
// Do some generic things across all strategies
//
}
public function execute(string $param1)
{
// Do something specific to this method
//
// Do some generic things across all strategies
//
}
public function execute()
{
// Do something specific to this method
//
// Do some generic things across all strategies
}
すべては、彼らがすべての戦略がどうなるという一般的な何かをする、非常に具体的な何かをするが、このために異なるパラメータを必要としています。
あなたはパラメータは、各機能が必要なものをどのように把握できますか?パラメータの選択は、戦略の一部であり、インタフェースの一部ではありません。 –
戦略構築時に必要なすべてのデータを渡し、戦略インタフェースからパラメータを削除することは可能ですか?これを行うことができれば、おそらくアルゴリズムのジェネリック部分を抽象基本戦略に移すこともできます。あるいは、戦略インタフェースにデータパッケージ(1つのモデル/オブジェクト)が必要であり、ストラテジ実装でその一部を選択的に使用させることができます。 – Reasurria