iOSではMVC以外にどのようなデザインパターンが使用されていますか? 質問する

iOSではMVC以外にどのようなデザインパターンが使用されていますか? 質問する

iPhone 開発で使用される MVC 以外のデザイン パターンについて知る必要があります。

サンプルの説明やコード スニペットの例を添えて返信してください。

ありがとう。

ベストアンサー1

アブストラクトファクトリー

Abstract Factory パターンは、具体的なクラスを指定せずに、関連オブジェクトまたは依存オブジェクトのファミリを作成するためのインターフェイスを提供します。クライアントは、ファクトリから取得された具体的なオブジェクトの詳細から切り離されます。

アダプタ

アダプタ デザイン パターンは、クラスのインターフェイスをクライアントが期待する別のインターフェイスに変換します。アダプタを使用すると、互換性のないインターフェイスのために連携できなかったクラスを連携させることができます。アダプタは、クライアントを対象オブジェクトのクラスから切り離します。

責任の連鎖

Chain of Responsibility 設計パターンは、複数のオブジェクトにリクエストを処理する機会を与えることで、リクエストの送信者と受信者を切り離します。このパターンは、受信オブジェクトを連結し、オブジェクトがリクエストを処理するまで、チェーンに沿ってリクエストを渡します。チェーン内の各オブジェクトは、リクエストを処理するか、チェーン内の次のオブジェクトにリクエストを渡します。

指示

コマンド設計パターンは、リクエストをオブジェクトとしてカプセル化します。これにより、さまざまなリクエストを持つクライアントをパラメータ化したり、リクエストをキューまたはログに記録したり、元に戻す操作をサポートしたりできるようになります。リクエスト オブジェクトは、特定の受信者に対する 1 つ以上のアクションを結合します。コマンド パターンは、リクエストを行うオブジェクトと、そのリクエストを受信して​​実行するオブジェクトを分離します。

複合

Composite デザイン パターンは、関連するオブジェクトをツリー構造に構成して、部分と全体の階層を表現します。このパターンにより、クライアントは個々のオブジェクトとオブジェクトの構成を均一に扱うことができます。Composite パターンは、Model-View-Controller 集約パターンの一部です。

デコレーター

Decorator デザイン パターンは、オブジェクトに追加の責任を動的に割り当てます。Decorator は、機能を拡張するためのサブクラス化の柔軟な代替手段を提供します。サブクラス化と同様に、Decorator パターンの適応により、既存のコードを変更することなく新しい動作を組み込むことができます。Decorator は、動作を拡張するクラスのオブジェクトをラップします。ラップするオブジェクトと同じインターフェイスを実装し、ラップされたオブジェクトにタスクを委任する前または後に、独自の動作を追加します。Decorator パターンは、クラスは拡張に対してオープンであるが、変更に対してはクローズであるという設計原則を表現します。

ファサード

ファサード設計パターンは、サブシステム内の一連のインターフェースに統一されたインターフェースを提供します。このパターンは、複雑さを軽減し、サブシステム間の通信と依存関係を隠すことで、サブシステムを使いやすくする高レベルのインターフェースを定義します。

イテレータ

Iterator デザイン パターンは、集約オブジェクト (つまり、コレクション) の要素に、その基礎となる表現を公開せずに順番にアクセスする方法を提供します。Iterator パターンは、コレクションの要素にアクセスしてトラバースする責任をコレクション自体からイテレータ オブジェクトに移します。Iterator は、コレクション要素にアクセスするためのインターフェイスを定義し、現在の要素を追跡します。異なるイテレータは、異なるトラバース ポリシーを実行できます。

調停者

メディエーター設計パターンは、一連のオブジェクトがどのように相互作用するかをカプセル化するオブジェクトを定義します。メディエーターは、オブジェクトが互いに明示的に参照しないようにすることで疎結合を促進し、相互作用を個別に変更できるようにします。そのため、これらのオブジェクトは再利用性を維持できます。このパターンの「メディエーター オブジェクト」は、システム内のオブジェクト間の複雑な通信と制御ロジックを一元化します。これらのオブジェクトは、状態が変化するとメディエーター オブジェクトに通知し、メディエーター オブジェクトからの要求に応答します。

メメント

Memento パターンは、カプセル化に違反することなく、オブジェクトの内部状態をキャプチャして外部化することで、後でオブジェクトをこの状態に復元できるようにします。Memento パターンは、結合性を維持するために、キー オブジェクトの重要な状態をそのオブジェクトの外部に保持します。

観察者

オブザーバー デザイン パターンは、オブジェクト間の 1 対多の依存関係を定義します。これにより、1 つのオブジェクトの状態が変化すると、そのすべての依存関係が自動的に通知され、更新されます。オブザーバー パターンは、基本的に、サブジェクトとオブザーバーが疎結合されたパブリッシュ アンド サブスクライブ モデルです。監視側オブジェクトと監視対象オブジェクトの間では、どちらかが他方についてあまり知らなくても通信を行うことができます。

プロキシ

プロキシ設計パターンは、別のオブジェクトへのアクセスを制御するために、別のオブジェクトの代理またはプレースホルダーを提供します。このパターンを使用して、別のオブジェクトへのアクセスを制御する代理またはプロキシ オブジェクトを作成します。このオブジェクトは、リモートであったり、作成にコストがかかったり、セキュリティ保護が必要であったりする場合があります。このパターンは、構造的には Decorator パターンに似ていますが、目的は異なります。Decorator はオブジェクトに動作を追加しますが、Proxy はオブジェクトへのアクセスを制御します。

受付

Receptionist デザイン パターンは、アプリケーションの 1 つの実行コンテキストで発生したイベントを別の実行コンテキストにリダイレクトして処理するという一般的な問題に対処します。これはハイブリッド パターンです。このパターンは「Gang of Four」の本には記載されていませんが、その本で説明されている Command、Memo、および Proxy デザイン パターンの要素を組み合わせたものです。また、Trampoline パターン (これも本には記載されていません) のバリエーションでもあります。このパターンでは、イベントは最初にトランポリン オブジェクトによって受信されます。このオブジェクトは、イベントをすぐにバウンス (リダイレクト) して処理する対象オブジェクトにするため、このように呼ばれています。

シングルトン

シングルトン設計パターンは、クラスが 1 つのインスタンスのみを持つことを保証し、そのインスタンスへのグローバル アクセス ポイントを提供します。クラスは、その唯一のインスタンスを追跡し、他のインスタンスが作成されないようにします。シングルトン クラスは、単一のオブジェクトがグローバル リソースへのアクセスを提供することが理にかなっている状況に適しています。

テンプレートメソッド

テンプレート メソッド デザイン パターンは、操作内のアルゴリズムの骨組みを定義し、一部の手順をサブクラスに委ねます。テンプレート メソッド パターンを使用すると、サブクラスはアルゴリズムの構造を変更せずに、アルゴリズムの特定の手順を再定義できます。

ソース: Cocoa デザインパターン

おすすめ記事