コードをより柔軟で保守しやすいものにしたい場合、デザイン パターン ファクトリは優れたソリューションです。これにより、オブジェクトの作成を特殊なメソッドに委任できるため、共通のインターフェイスを共有するさまざまな種類のオブジェクトを管理する必要がある場合に非常に役立ちます。
プロジェクト内でインスタンス化するオブジェクトが数種類あり、それぞれに固有のロジックがあると想像してみましょう。あらゆる場所で new ClassName() を乗算し始めると、コードの保守がすぐに困難になります。そこで Pattern Factory.
が登場します。ご覧のとおり、これは非常に簡単です。new を使用してオブジェクトを直接インスタンス化する代わりに、必要なオブジェクトの選択と作成を担当する ファクトリー メソッドを経由します。これにより、コードの残りの部分から作成ロジックを切り離すことができます。メンテナンスが簡単になり、柔軟性が向上しました。
通知を送信するアプリケーションを想像してみましょう。電子メール、SMS、またはプッシュ通知の送信が必要になる場合があります。どのクラスをインスタンス化するかを知るためにコードに多くの if を追加するのではなく、それを factory.
に委任します。まず、各通知タイプが実装する必要があるインターフェイスを定義します。各通知には send() メソッドが必要です。
各通知タイプには、このインターフェイスを実装する独自のクラスがあります。たとえば、電子メールを送信するには:
SMS も同様:
プッシュ通知の場合:
次に、ファクトリーを作成します。あなたが彼女に渡すタイプに応じて、どの通知をインスタンス化するかを決定するのは彼女です。
そして、これが Symfony コントローラーでこのファクトリーを使用する方法です。どのような種類の通知を送信するかを知るために大量の if を記述するのではなく、工場に決定させます。
懸念事項の分離: コントローラーは、通知を作成するためのロジックを知る必要はありません。彼はメッセージを送信するという仕事をしているだけです。それ以外はすべて工場によって管理されます。
メンテナンスの容易さ: ある日、新しいタイプの通知 (Slack 経由の通知など) を追加する必要がある場合は、新しいクラスを追加して工場で統合するだけです。コードの残りの部分に触れる必要はありません。
拡張性: デザイン パターン ファクトリを使用すると、既に機能しているものを壊すことなく、新しいタイプの通知を簡単に追加できます。これは、SOLID の純粋な オープン/クローズド原則 です。コードは拡張に対してオープンですが、変更に対してはクローズドです。
パターン ファクトリーは、特に新しいクラシックで十分な単純なプロジェクトの場合、少し複雑になる可能性があります。したがって、実際に関連する場合、それを使用する方法を知っておく必要があります。プロジェクトが進化し、新しいタイプのオブジェクトを定期的に追加する必要があることがわかっている場合、これは優れた選択です。
デザイン パターン ファクトリを使用すると、オブジェクトの作成を一元化し、コードをより柔軟にすることができます。オブジェクトの作成を専用のメソッドに委任することで、メンテナンスが容易になり、プロジェクトの進化に備えることができます。このパターンは Symfony プロジェクトに非常によく適合し、コードをクリーンで整理された状態に保つのに非常に役立ちます。
それで、このパターンを次の Symfony プロジェクトに統合する準備はできましたか?すでに Factory を使用したことがある場合は、遠慮せずにその経験を共有してください。他の人がどのようにやっているのか知りたいと常に思っています!
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3