このシリーズの記事は、PHP でのデザイン パターンの適用についてまとめています。これは、作成パターンのシングルトン パターンに関する最初の記事です。
1. デザインパターンの紹介
まず、デザインパターンとは何かを理解しましょう:
設計パターンは、繰り返し使用され、他の人が理解しやすく、信頼できるコード設計の経験を要約したものです。
デザインパターンは Java の特許ではありません。オブジェクト指向の手法を使用して、PHP でも 23 のデザインパターンを使用できます。
では、私たちがよく話題にするアーキテクチャ、フレームワーク、デザインパターンの間にはどのような関係があるのでしょうか?
アーキテクチャは一連のシステム構造であり、プロジェクトの全体的なソリューションです。フレームワークは再利用可能な半完成のソフトウェアであり、特定のプログラム コードです。一般にアーキテクチャには、特定の問題の解決を高速化および最適化するためにどのような種類のフレームワークを使用するかが関係しており、優れたフレームワーク コードは多くの設計パターンを合理的に使用しています。
2. デザインパターンのいくつかの原則を洗練する:
開閉の原則: モジュールは拡張の場合は開いておく必要がありますが、変更の場合は閉じる必要があります。
Liskov 置換原則: 親クラスが呼び出された場合、それがサブクラスに置き換えられると、そのクラスを実行できます。
依存関係逆転の原則: 抽象化は詳細に依存せず、インターフェイス指向のプログラミングで、渡されたパラメーターは高レベルのクラスを参照しようとします。
インターフェイス分離の原則: 各インターフェイスは 1 つの役割のみを担当します。
合成/集約の再利用の原則: 合成/集約を可能な限り使用し、継承を乱用しないでください。
3. デザインパターンの機能は何ですか?
デザインパターンで解決できる
乱雑なコードを置き換えて、適切なコードスタイルを形成します
コードは読みやすく、エンジニアにとっても簡単に理解できます
新しい機能を追加する際にインターフェースを変更する必要がなく、拡張性が高いです
安定性が良く、一般的に未知の問題は発生しません
デザインパターンでは解決できません:
デザイン パターンは、直接呼び出されるライブラリではなく、コードを整理するために使用されるテンプレートです。
デザインパターンは最も効率的ではありませんが、コードの可読性と保守性の方が重要です
やみくもにデザインパターンを追求して適用するのではなく、リファクタリングの際にはそれについてもっと考えてください
4. デザインパターンの分類
1. 作成モード:
シングルトンパターン、ファクトリパターン(シンプルファクトリ、ファクトリメソッド、抽象ファクトリ)、クリエータパターン、プロトタイプパターン。
2. 構造パターン:
アダプターモード、ブリッジモード、デコレーションモード、コンビネーションモード、アピアランスモード、フライウェイトモード、プロキシモード。
3. 行動モデル:
テンプレートメソッドパターン、コマンドパターン、イテレータパターン、オブザーバパターン、メディエータパターン、メメントパターン、インタプリタパターン、状態パターン、戦略パターン、責任連鎖パターン、訪問者パターン。
5.創造的なデザインパターン
1. シングルトンモード
目的: クラスにインスタンスが 1 つだけあることを確認し、そのインスタンスにアクセスするためのグローバル アクセス ポイントを提供します。
アプリケーション シナリオ: データベース接続、キャッシュ操作、分散ストレージ。
特記事項: getInstance には if 判定があり、その後オブジェクトが生成されます。マルチスレッド言語では同時実行の問題が発生します。たとえば、Java ではメソッドに synchronized キーワードを追加して同期させる方法と、クラスのメンバ変数を定義するときに事前に _instac を初期化する方法がありますが、PHP ではこれら 2 つの方法をサポートしていません。ただし、PHP はマルチスレッドをサポートしていないため、この問題を考慮する必要はありません。
PHP デザインパターンのシングルトンパターンについて何か知っていますか?次回はファクトリーパターンを紹介します。