は、一般的に発生するソフトウェアの問題に対する高度なオブジェクト指向ソリューションです。パターンは、オブジェクトの再利用可能なデザインと相互作用です。各パターンには名前があり、複雑な設計ソリューションについて話し合うときに語彙の一部になります。
JavaScriptのデザインパターンとは何ですか?
として定義することができます ソフトウェアテンプレート または、ソフトウェアアプリケーションまたはソフトウェアフレームワークの設計中に複数のインスタンスで発生する問題を解決するための説明。
それでは、Gang of Four(GoF)について説明しましょう。
ギャングオブフォー
ザ・ 23ギャングオブフォー(GoF) パターンは通常、他のすべてのパターンの基盤と見なされます。
ギャングオブフォー(GoF) デザインパターンから:
C ++でのオーバーロードとオーバーライドの違い
再利用可能なオブジェクト指向ソフトウェアの要素、Addison-Wesley Professional Computing Series、 エーリヒ・ガンマ、リチャード・ヘルム、ラルフ・ジョンソン、 そして ジョン・ブリシディーズ。 Tこれらの23のGoFパターンは、一般に他のすべてのパターンの基盤と見なされます。それらは3つのグループに分類されます。 創造的、構造的、行動的。
デザインパターンの種類
JavaScriptには基本的に3つの異なるタイプのデザインパターンがあります。それらは次のとおりです。
創造的パターン
抽象ファクトリ: これにより、クラスのいくつかのファミリを持つインスタンスが作成されます。これにより、具体的なクラスを指定せずに、関連オブジェクトまたは依存オブジェクトであるファミリを作成するためのインターフェイスが提供されます。
ビルダー: これにより、オブジェクトの構築がその表現から分離されました。また、複雑なオブジェクトの構築をその表現から分離して、まったく同じ構築プロセスを異なる表現で作成できるようにします。
ファクトリメソッド: これにより、いくつかの派生クラスのインスタンスが作成されます。オブジェクトを作成するためのインターフェイスも定義しますが、サブクラスがインスタンス化するクラスを決定できるようにします。これには、クラスがインスタンス化をサブクラスに延期できるようにするファクトリメソッドもあります。
プロトタイプ: これは完全に初期化されたインスタンスであり、コピーまたは複製できます。具体的には、プロトタイプインスタンスを使用して作成するオブジェクトの種類は、このプロトタイプをコピーして新しいオブジェクトを作成します。
シングルトン: コピーまたは複製されるインスタンスは完全に初期化されています。プロトタイプインスタンスを使用して作成し、このプロトタイプをコピーして新しいオブジェクトを作成するのは、特定の種類のオブジェクトです。
構造パターン
アダプタ: 異なるクラスのインターフェースと一致します。また、クラスのインターフェイスを、クライアントを持つインターフェイスを除く別のインターフェイスに変換します。このアダプターを使用すると、インターフェースの非互換性が原因で他の方法では不可能だったクラスを連携させることもできます。
ブリッジ: オブジェクトのインターフェースをその実装から分離します。アブストラクトをその実装から切り離して、2つが独立して変化できるようにします。
複合: ツリー構造は、単純な複合オブジェクトで構成され、オブジェクトをツリー構造に構成して、部分全体の階層を表します。コンポジットを使用すると、クライアントは個々のオブジェクトとオブジェクトの構成を均一に扱うことができます。
AWSCLIを開始する方法
デコレータ: オブジェクトに責任を動的に追加します。追加の責任をオブジェクトに動的に関連付けます。デコレータは、機能を拡張するためのサブクラス化の柔軟な代替手段も提供します。
ファサード: サブシステム全体を表し、システム内の一連のインターフェイスへの統合インターフェイスを提供する単一のクラス。 Façadeは、サブシステムを使いやすくする高レベルのインターフェースを定義します。
フライ級: 多数の細粒度オブジェクトを効率的にサポートするための効率的な共有に使用される細粒度インスタンス。フライウェイトは、複数のコンテキストで同時に使用できる共有オブジェクトです。フライウェイトは、各コンテキストで独立したオブジェクトとしても機能します。共有されていないオブジェクトのインスタンスと区別できません。
プロキシ: 別のオブジェクトを表すオブジェクトです。これは、サロゲートまたはプレースホルダーオブジェクトを提供して、サロゲートへのアクセスを制御します。
行動パターン:
責任の連鎖: これは、オブジェクトのチェーン間でリクエストを渡す方法です。複数のオブジェクトに要求を処理する機会を与えることにより、送信者との結合を回避し、受信者に要求を送信します。受信オブジェクトはチェーンされ、オブジェクトが処理するまでチェーンに沿ってリクエストを渡します。
コマンド: コマンドリクエストをオブジェクトとしてカプセル化します。オブジェクトとしてカプセル化されたリクエスト。したがって、さまざまなリクエスト、キュー、またはログリクエストでクライアントをパラメータ化し、元に戻すことができる操作をサポートできます。
通訳: これは、プログラムに言語要素を含める方法です。言語を指定して、その文法の表現を、その表現を使用してその言語の文を解釈するインタープリターとともに定義します。
イテレータ: コレクションの要素への順次アクセスは、基礎となる表現を公開せずに、集約オブジェクトの要素に順次アクセスする方法を提供します。
Javaの再帰フィボナッチ数列
調停人: クラス間の通信を簡素化することを定義します。オブジェクトのセットがどのように相互作用するかをカプセル化するオブジェクトを定義します。メディエーター オブジェクトが相互に明示的に参照しないようにすることで疎結合を促進し、オブジェクトの相互作用を個別に変更できるようにします。
Memento: オブジェクトの内部状態をキャプチャして復元します。オブジェクトの内部状態のカプセル化、キャプチャ、外部化に違反しないため、後でオブジェクトをこの状態に復元できます。
観察者: これは、いくつかのクラスへの変更を通知する方法です。オブジェクト間の1対多の依存関係を定義し、1つのオブジェクトの状態が変更されると、そのすべての依存関係が自動的に通知および更新されるようにします。
状態: 状態が変化したときにオブジェクトの動作を変更します。内部状態が変化したときにオブジェクトがその動作を変更できるようにします。オブジェクトはそのクラスを変更しているように見えます。
戦略: クラス内にアルゴリズムをカプセル化し、ファミリーアルゴリズムを定義し、それぞれをカプセル化して、交換可能にします。ストラテジーにより、アルゴリズムはそれを使用するクライアントとは独立して変化します。
テンプレート: アルゴリズムの正確なステップをサブクラスに延期します。これは、操作のアルゴリズムのスケルトンを定義し、いくつかの重要なステップをサブクラスに延期します。テンプレートメソッドを使用すると、アルゴリズムの構造を変更せずに、アルゴリズムの特定のステップを再定義するサブクラスを作成できます。
ビジター: これは、変更せずにクラスに新しい操作を定義します。オブジェクト構造の要素に対して実行される操作を表します。ビジターを使用すると、操作する要素のクラスを変更せずに、新しい操作を定義できます。
これで、この記事は終わりです。 JavaScriptのデザインパターン、そのタイプ、重要性、および実装について理解していただければ幸いです。
JavaScriptのデザインパターンの基本を理解したので、 25万人以上の満足した学習者のネットワークを持つ信頼できるオンライン学習会社であるEdurekaが世界中に広がっています。 EdurekaのJavaJ2EEおよびSOAトレーニングおよび認定コースは、Java開発者になりたい学生および専門家向けに設計されています。このコースは、Javaプログラミングをすぐに開始できるように設計されており、HibernateやHibernateなどのさまざまなJavaフレームワークに加えて、コアと高度なJavaの両方の概念についてトレーニングします。 春 。
質問がありますか?この「JavaScriptのデザインパターン」ブログのコメントセクションで言及してください。できるだけ早くご連絡いたします。