デザイン パターンとは、開発者がソフトウェア開発中に繰り返し遭遇する問題に対してまとめた解決策を指します。この記事ではデザインパターンを中心に紹介していますので、興味のある方はぜひご覧ください。
オープンとクローズの原則: などのソフトウェアエンティティクラスとして、モジュールと関数は拡張のためにオープンし、変更のためにクローズする必要があります。
Richter 置換原則: 基本クラスを参照するすべての場所で、そのサブクラスのオブジェクトを透過的に使用できる必要があります。
依存関係逆転原則:高レベルのモジュールは低レベルのモジュールに依存すべきではなく、両方ともその抽象化に依存すべきであり、抽象化は詳細に依存すべきではなく、詳細は抽象化に依存すべきです。
単一責任の原則: クラス変更の理由は複数あってはならない。平たく言えば、クラスは 1 つの責任だけを担当します。
インターフェイス分離の原則: クライアントは、必要のないインターフェイスに依存すべきではありません。あるクラスの別のクラスに対する依存関係は、最小のインターフェイスに基づく必要があります。
デメテルの法則: オブジェクトは他のオブジェクトに関する最小限の知識を保持する必要があります
Abstract Factory (抽象ファクトリ パターン) : 特定のクラスを指定せずに、一連の関連オブジェクトまたは相互依存オブジェクトを作成するためのインターフェイスを提供します。
Adapter (アダプター パターン): クラスのインターフェイスを顧客が必要とする別のインターフェイスに変換します。アダプター パターンを使用すると、インターフェイスに互換性がないために連携できないクラスが連携できるようになります。
ブリッジ (ブリッジ モード) : 抽象部分を実装部分から分離して、独立して変更できるようにします。
ビルダー (ビルダー パターン): 複雑なオブジェクトの構築をその表現から分離し、同じ構築プロセスで異なる表現を作成できるようにします。
責任の連鎖 (責任の連鎖モード) : リクエストの送信者と受信者を切り離し、複数のオブジェクトがリクエストを処理できるようにします。これらのオブジェクトはチェーンに接続され、リクエストはオブジェクトが処理するまでチェーンに沿って渡されます。
コマンド (コマンド モード): リクエストをオブジェクトとしてカプセル化し、さまざまなリクエストでクライアントをパラメータ化できるようにします。リクエストをキューに入れたり、リクエスト ログを記録したり、オプションのキャンセル操作をサポートしたりできます。
Composite (複合モード): オブジェクトをツリー構造に結合して、「部分全体」の階層を表します。コンポジットを使用すると、顧客は単一オブジェクトと複合オブジェクトを一貫して使用できるようになります。
Decorator (デコレータ パターン): 追加の責任をオブジェクトに動的に追加します。拡張機能の点では、Decorator パターンはサブクラス化メソッドよりも柔軟です。
Facade (ファサード モード): サブシステムの一連のインターフェイスに一貫したインターフェイスを提供します。ファサード モードは、サブシステムを使いやすくする高レベルのインターフェイスを定義します。
ファクトリ メソッド (ファクトリ メソッド パターン): オブジェクトを作成するためのインターフェイスを定義し、どのクラスをインスタンス化するかをサブクラスに決定させます。ファクトリ メソッドは、クラスのインスタンス化をそのサブクラスに延期します。
フライウェイト (フライウェイト モード): 共有テクノロジを使用して、多数の きめの細かいオブジェクトを効果的にサポートします。
インタープリター (インタープリター モード) : 与えられた言語で、その文法の表現を定義し、その表現を使用して言語の文を解釈するインタープリターを定義します。
Iterator (反復子パターン): オブジェクトの内部表現を公開せずに、集約オブジェクト内の各要素に順次アクセスするメソッドを提供します。
Mediator (メディエーター パターン): メディエーター オブジェクトを使用して、一連のオブジェクト インタラクションをカプセル化します。メディエーターにより、オブジェクトが相互に明示的に参照する必要がなくなるため、オブジェクトは疎結合になり、相互作用を独立して変更できます。
Memento (メモ モード): カプセル化を破壊することなく、オブジェクトの内部状態をキャプチャし、この状態をオブジェクトの外部に保存します。これにより、後でオブジェクトを保存された状態に復元できます。
Observer (オブザーバー パターン): オブジェクト間の 1 対多の依存関係を定義します。これにより、オブジェクトの状態が変化したときに、それに依存するすべてのオブジェクトが通知され、自動的に更新されます。
プロトタイプ (プロトタイプ モード): プロトタイプ インスタンスを使用して、作成するオブジェクトのタイプを指定し、このプロトタイプをコピーして新しいオブジェクトを作成します。
プロキシ (プロキシ モード): このオブジェクトへのアクセスを制御するために、他のオブジェクトにプロキシを提供します。
Simple Factory (シンプル ファクトリ モード): さまざまなパラメータに従ってさまざまなクラスのインスタンスを返します。
Sigleton (シングル ケース モード) : クラスにインスタンスが 1 つだけあることを確認し、それにアクセスするためのグローバル アクセス ポイントを提供します。
State (状態モード) : 内部状態が変化したときにオブジェクトの動作を変更できるようにします。オブジェクトは、それが属するクラスが変更されたように見えます。
Strategy (Strategy モード): 一連のアルゴリズムを定義し、それらを 1 つずつカプセル化し、互換性を持たせます。このモードでは、アルゴリズムを使用するユーザーとは独立してアルゴリズムを変更できます。
テンプレート メソッド (テンプレート メソッド パターン) : 一部のステップをサブクラスに延期しながら、操作内のアルゴリズムのスケルトンを定義します。テンプレート メソッドを使用すると、アルゴリズムの構造を変更せずに、サブクラスでアルゴリズムの特定のステップを再定義できます。
Visitor (ビジター モード): オブジェクト構造内の各要素に作用する操作を表します。これにより、クラスを変更せずに各要素に作用する新しい操作を定義できます。
PHP 中国語 Web サイトに注目してください。
以上がソフトウェア設計パターンの基本概念の説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。