php 設計パターンには、1. シングルトン パターン、2. ファクトリ パターン、3. オブザーバー パターン、4. デコレータ パターン、5. ストラテジー パターンが含まれます。
このチュートリアルの動作環境: Windows10 システム、php8.1.3 バージョン、DELL G3 コンピューター。
PHP は、Web アプリケーションの開発によく使用される、広く使用されているプログラミング言語です。開発プロセスでは、デザイン パターンは、一般的なソフトウェア デザインの問題を解決するために広く使用されているアイデアと方法です。デザイン パターンにより、コードの保守性、拡張性、再利用性が向上し、チーム開発における開発効率も向上します。この記事では、一般的に使用される PHP デザイン パターンをいくつか紹介します。
1. シングルトン パターン: シングルトン パターンでは、クラスのインスタンスが 1 つだけ存在することが保証され、グローバル アクセス ポイントが提供されます。 PHP では、静的変数と静的メソッドを使用してシングルトン パターンを実装できます。例:
classSingleton{ privatestatic$instance; privatefunction__construct(){} publicstaticfunctiongetInstance(){ if(self::$instance==null){ self::$instance=newself(); } returnself::$instance; } }
2. 工場出荷時のパターン: ファクトリ パターンは、オブジェクトを直接インスタンス化するのではなく、パブリック インターフェイスを通じてオブジェクトを作成します。ファクトリ パターンは、オブジェクトの作成の詳細を非表示にし、コードの保守性と柔軟性を向上させることができます。例:
interfaceCarFactory{ publicfunctioncreateCar(); } classBenzFactoryimplementsCarFactory{ publicfunctioncreateCar(){ returnnewBenz(); } } classBmwFactoryimplementsCarFactory{ publicfunctioncreateCar(){ returnnewBmw(); } }
3. オブザーバー パターン: Observer パターンは 1 対多の依存関係を定義し、オブジェクトの状態が変化すると、その依存関係にあるすべてのオブジェクトが通知され、自動的に更新されます。 PHP では、SplSubject インターフェイスと SplObserver インターフェイスを使用してオブザーバー パターンを実装できます。例:
classSubjectimplementsSplSubject{ private$observers; publicfunction__construct(){ $this->observers=newSplObjectStorage(); } publicfunctionattach(SplObserver$observer){ $this->observers->attach($observer); } publicfunctiondetach(SplObserver$observer){ $this->observers->detach($observer); } publicfunctionnotify(){ foreach($this->observersas$observer){ $observer->update($this); } } } classObserverimplementsSplObserver{ publicfunctionupdate(SplSubject$subject){ //处理更新逻辑 } }
4. デコレータ パターン: デコレータ パターンは、オブジェクトの構造を変更せずに、新しい機能をオブジェクトに動的に追加できます。 PHP では、デコレータ パターンは継承と合成を使用して実装できます。例:
interfaceShape{ publicfunctiondraw(); } classCircleimplementsShape{ publicfunctiondraw(){ echo"绘制一个圆形"; } } abstractclassShapeDecoratorimplementsShape{ protected$shape; publicfunction__construct(Shape$shape){ $this->shape=$shape; } publicfunctiondraw(){ $this->shape->draw(); } } classRedShapeDecoratorextendsShapeDecorator{ publicfunctiondraw(){ $this->shape->draw(); $this->setRedBorder(); } privatefunctionsetRedBorder(){ echo"添加红色边框"; } }
5. 戦略パターン: Strategy パターンは、アルゴリズムのファミリーを定義し、それらをカプセル化し、交換可能にします。 PHP では、インターフェイスと具体的な実装クラスを使用して戦略パターンを実装できます。例:
interfacePaymentStrategy{ publicfunctionpay($amount); } classCreditCardStrategyimplementsPaymentStrategy{ publicfunctionpay($amount){ //信用卡支付逻辑 } } classPaypalStrategyimplementsPaymentStrategy{ publicfunctionpay($amount){ //Paypal支付逻辑 } }
上記は一般的な PHP 設計パターンのほんの一部ですが、実際には、アダプター パターン、コマンド パターン、プロキシ パターンなど、他にも多くの設計パターンがあります。適切な設計パターンを選択すると、コードの可読性、保守性、拡張性が向上し、ソフトウェア開発がより効率的かつ柔軟になります。
以上がPHP のデザイン パターンとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。