あなたが説明する問題は、そのクラスのコンストラクターパラメーターが変更されたときに、クラスのすべてのクライアントを変更する必要があることです。ファクトリを導入すると、クライアントの再コンパイルを防ぐことができます。しかし、これで本当に問題は解決するのでしょうか? クラスを別のパラメーターで構築するように変更する場合、おそらく構築を開始するクライアントのコンテキストで、そのパラメーターをどこかで決定する必要があります。ファクトリクラスはどのように知る必要がありますか? クライアントはコンテキスト情報をファクトリに渡す必要がありますか?
オブジェクトを構築するために必要なパラメーターは何ですか? クライアントはそれらを提供しますか、それともオブジェクトを事前に作成してから、ファクトリを注入するようにクライアントに注入できますか (あなたの質問は後者のようです)。DI フレームワークの使用を検討してください。これにより、工場が時代遅れになることがよくあります。
クラスが変更される可能性が高いのはなぜですか?あなたのクラスはあまりにも多くのことをしている可能性がありますか? 単一責任の原則に注意してください。あなたの場合、Open/Closed Principleも興味深い研究です。
私が理解しているように、工場は必ずしもあなたが説明した問題に対処するとは限りません。ファクトリはクライアントから離れてオブジェクトを作成する責任を負うため、クライアントはオブジェクトの具体的なタイプを知る必要はありません。署名が安定したままになるのを防ぐだけでも、パラメーターを単一のオブジェクトにラップすることで実行できます。これもよく知られたリファクタリング パターンです。しかし、新しいパラメーターがどこから来たのかという問題も解決しません。