ホームページ >バックエンド開発 >PHPチュートリアル >PHP で一般的に使用される 5 つのデザイン パターン - ファクトリ パターン
私はいつもデザイン パターンに畏敬の念を抱いてきました。デザイン パターンを見たいと思うたびに、Erich Gamma、Richard Helm、Ralph Johnson、John Vlissides による黒い本「デザイン パターン」を思い出します。その本を読み終えるのにそれほど時間はかかりませんし、プロジェクトの経験がなければ、基本的には単なる机上の空論に過ぎないと個人的に感じます。
今日、IBM Developerworks で PHP で一般的に使用される 5 つのデザイン パターンがリストされている記事を見ました。非常に良いと思います。5 つ、5 つ、5 つ、5 つしかありません (重要な 3 回を強調)。簡単なものから始めて、これら 5 つのタイプを排除しましょう。今後は他のデザインパターンも少しずつ学んでいきたいと思います。
工場という言葉の使い方は非常に鮮やかです。このモードでは、多くの 1 つまたは複数の製品を生産する工場があります (実際には、その状況は 1 つをカバーします)。タイプ)ですが、各製品がどのように製造され、パッケージ化されているかはわかりません。実際、知れば知るほど、将来の行動も混乱するでしょう。雑務が多い、よく言われるのが結合度が高すぎるので工場に任せている、必要なものだけを工場に伝えれば納品してくれるということです。製品のプロセスが変更された場合、その責任は工場にあり、製品を使用するプロセスは影響を受けません。したがって、ファクトリ モードではシステムの結合が大幅に軽減され、システムの安定性が向上し、もちろんコードの再利用率も向上します。
実際のプログラミングでは、ファクトリは外部インターフェイスに相当するため、このインターフェイスの戻り値の型はどのように決定されるのでしょうか。では、このファクトリを使用してさまざまな製品を製造し、顧客に送り返すにはどうすればよいでしょうか。非常に簡単です。すべての製品の「型」を作成するだけです。この「型」には各製品のすべての機能が含まれていますが、これらの機能を実装するには特定の製品が必要であり、これをよくインターフェイスと呼びます。
クラス図を使用して、次のように表します。
<?php/** * Created by PhpStorm. * User: Defei * Date: 2015/8/8 * Time: 16:14 */interface Product{ public function getName();}
<?php /** * Created by PhpStorm. * User: Defei * Date: 2015/8/8 * Time: 16:16 */ class ProductA implements Product{ public function getName(){ // TODO: Implement getName() method. echo '我是产品A'; } }
<?php /** * Created by PhpStorm. * User: Defei * Date: 2015/8/8 * Time: 16:17 */ class ProductB implements Product{ public function getName(){ // TODO: Implement getName() method. echo '我是产品B'; } }
製品 A と B が設計され、工場が建設されました。次のステップは、この工場の生産能力をテストすることです。
<?php/** * Created by PhpStorm. * User: Defei * Date: 2015/8/8 * Time: 16:18 */class ProductFactory{ /** * @param $product_name * @return mixed */ public function factory($product_name){ return new $product_name; //PHP可以使用名字直接new一个同名的对象这个很方便 }}
出力結果は以下の通りです:
著作権表示: この記事はブロガーによるオリジナル記事であり、ブロガーの許可なしに転載することはできません。