現在、Python で Factory デザイン パターンを実装していますが、いくつか質問があります。
実際の具象クラスの直接インスタンス化を防ぐ方法はありますか? たとえば、Vehicles を生成する VehicleFactory がある場合、ユーザーはそのファクトリを使用するだけで済み、誰かが誤って Car() または Truck() を直接インスタンス化するのを防ぐことができます。おそらくinit ()で例外をスローできますが、それはファクトリがそのインスタンスを作成できないことも意味します...
工場が中毒性を増しているように思えます。内部実装を変更してもクライアント コードが変更されないように、すべてがファクトリになる必要があるようです。実際にファクトリを使用する必要があるのはいつで、いつ使用するのが適切でないのか知りたいです。たとえば、私は Window クラスを持っているかもしれませんが、現在このタイプは 1 つしかありません (PlasticWindow、ReinforcedWindow などはありません)。その場合、将来さらに多くの種類の Windows を追加する可能性がある場合に備えて、クライアントにファクトリを使用して Window を生成する必要がありますか?
工場を呼び出す通常の方法があるかどうか疑問に思っています。たとえば、Vehicle ファクトリを Vehicles と呼んでいるので、コードは Vehicles.create(...) のようになります。VehicleFactory のように多くのチュートリアルが実行されているのを目にしますが、長すぎて、実装も公開されているように感じます。
編集:「実装を公開する」とは、それが工場であることを人々に知らせることです。私が感じたのは、クライアントはそれがファクトリであることを知る必要はなく、オブジェクトを返すことができる何らかのクラスとして知る必要があるということでした (これはもちろんファクトリですが、クライアントに明示的に伝える必要はないのでしょうか?)。ソースコードが簡単に公開されることは知っているので、「ソースコードで機能が実装されている方法を公開する」という意味ではありませんでした。
ありがとう!