1. ホーム
  2. oop

[解決済み] WRAPPERはプログラミングのどこで、どのように使われているか、何をするのに役立つか?

2022-10-07 08:53:32

質問

ソフトウェア開発者が、他のクラスやAPI、あるいはいくつかのコードのラッパーを作成するという言葉を使うのを見かけますが、これは経験豊富なソフトウェアプログラマが使う言葉です。

彼らはそれによって何を意味するのでしょうか。

例:単純な質問ですが、2種類の配列ソート技法があるので、それのラッパーを作りましょう。

上の例はとても簡単な例です

どのように解決するのですか?

ラッパー "という用語はよく使われます。一般的には、他のクラスのインスタンスを含むが、そのインスタンスを直接公開しないクラスを記述するために使用されます。ラッパーの主な目的は、ラップされたオブジェクトを使用する「別の」方法を提供することです(おそらくラッパーはより単純なインターフェースを提供したり、いくつかの機能を追加したりします)。

ラッパー」という言葉は、古典的なデザインパターンを説明するときにも使うことができます。

オブジェクトを包んで簡略化したインターフェースを提供することは、しばしば「ファサード」パターンと表現されます。ラッパーはファサードなのです。

時には、特定のインタフェースに適したクラスがあっても、そのクラスのコードを変更してそのインタフェースに適合させることができないことがあります。このクラスはインターフェースを実装していますが、ほとんどの呼び出しをラップされたオブジェクトに誘導するラッパーを作成することができます。これが「Adapter」パターンです。ラッパーがアダプターなのです。

あなたが説明した、異なるアルゴリズムを使用して配列のソートを行うことができる2つのクラスがある例は、「Strategy」パターンのように聞こえます。これは、あるオブジェクトに対して操作を実行する方法を提供しますが、その操作に使用するアルゴリズムはそのオブジェクトの構造に応じて異なる場合があります。

例えば、ソートアルゴリズムの1つは100未満の長さの配列に最適かもしれませんが、その場合、パフォーマンスが問題になるかもしれません。もう一方のアルゴリズムは、より大きな配列に適しているかもしれません。あなたは、ソート操作をサポートし、配列の長さに基づいて使用するアルゴリズムを決定する、2つのアルゴリズムのための「ラッパー」を作成することができます。

ラッパーの大部分は、ある種の複雑さを隠すために存在します。