[解決済み] WRAPPERはプログラミングのどこで、どのように使われているか、何をするのに役立つか?
質問
ソフトウェア開発者が、他のクラスやAPI、あるいはいくつかのコードのラッパーを作成するという言葉を使うのを見かけますが、これは経験豊富なソフトウェアプログラマが使う言葉です。
彼らはそれによって何を意味するのでしょうか。
例:単純な質問ですが、2種類の配列ソート技法があるので、それのラッパーを作りましょう。
上の例はとても簡単な例です
どのように解決するのですか?
ラッパー "という用語はよく使われます。一般的には、他のクラスのインスタンスを含むが、そのインスタンスを直接公開しないクラスを記述するために使用されます。ラッパーの主な目的は、ラップされたオブジェクトを使用する「別の」方法を提供することです(おそらくラッパーはより単純なインターフェースを提供したり、いくつかの機能を追加したりします)。
ラッパー」という言葉は、古典的なデザインパターンを説明するときにも使うことができます。
オブジェクトを包んで簡略化したインターフェースを提供することは、しばしば「ファサード」パターンと表現されます。ラッパーはファサードなのです。
時には、特定のインタフェースに適したクラスがあっても、そのクラスのコードを変更してそのインタフェースに適合させることができないことがあります。このクラスはインターフェースを実装していますが、ほとんどの呼び出しをラップされたオブジェクトに誘導するラッパーを作成することができます。これが「Adapter」パターンです。ラッパーがアダプターなのです。
あなたが説明した、異なるアルゴリズムを使用して配列のソートを行うことができる2つのクラスがある例は、「Strategy」パターンのように聞こえます。これは、あるオブジェクトに対して操作を実行する方法を提供しますが、その操作に使用するアルゴリズムはそのオブジェクトの構造に応じて異なる場合があります。
例えば、ソートアルゴリズムの1つは100未満の長さの配列に最適かもしれませんが、その場合、パフォーマンスが問題になるかもしれません。もう一方のアルゴリズムは、より大きな配列に適しているかもしれません。あなたは、ソート操作をサポートし、配列の長さに基づいて使用するアルゴリズムを決定する、2つのアルゴリズムのための「ラッパー」を作成することができます。
ラッパーの大部分は、ある種の複雑さを隠すために存在します。
関連
-
[解決済み] MVPとMVC、その違いは何ですか?
-
[解決済み] Inversion of Controlとは?
-
[解決済み] インターフェースと抽象クラスの違いは何ですか?
-
[解決済み] 抽象メソッドと仮想メソッドの違いは何ですか?
-
[解決済み] オブジェクト名の前のシングルアンダーコアとダブルアンダーコアの意味は何ですか?
-
[解決済み] フィールドとプロパティの違いは何ですか?
-
[解決済み] フレームワークとライブラリの違いは何ですか?
-
[解決済み] ポーセリンとは、Gitではどのような意味ですか?
-
[解決済み】type()とisinstance()の違いは何ですか?)
-
[解決済み】定義と宣言の違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 関数型プログラミングとオブジェクト指向プログラミングの比較【終了しました
-
[解決済み] Java のコア・ライブラリにおける GoF デザイン・パターンの例
-
[解決済み] ポリモーフィズムとは何か、何のためにあり、どのように使われるのか?
-
[解決済み] コヒーシ ョンとカップリングの違い
-
[解決済み] 抽象クラスの代わりにインターフェイスを使用する場合とその逆は?
-
[解決済み】コンストラクターとファクトリーメソッドの比較【終了しました
-
[解決済み] nullを返すのは設計ミス?[クローズド]
-
[解決済み] Laravelにおけるリレーションシップの管理、リポジトリパターンへの準拠
-
[解決済み] ベストプラクティス:クラス定義内でのpublic/protected/privateの順序?
-
[解決済み] Scalaでコンパニオン・オブジェクトを持つ根拠は何ですか?