- - PR -
Wrapper関数とは何ですか?
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-07-09 15:54
はじめまして、よろしくお願いいたします。
よくJavaでWrapper(ラッパー)関数と言う言葉が出てきますが、 ラッパ関数の意味をGoogleで検索して調べても出てきません。 どういう意味で一般的に何をするための関数をラッパ関数の言うのでしょうか? |
|
投稿日時: 2004-07-09 16:09
「Wrapper関数」という言葉は私も聞きませんが、「Wrapperクラス」なら本にも説明が載っているのではないでしょうか?
WrapperクラスのメソッドのことをWrapper関数と言っているのではないかと思いますが…… |
|
投稿日時: 2004-07-09 16:12
「Wrapper」という英単語の意味を調べてみましたか?
そのままの意味で、元々あった関数をラッピングする関数です。 ちなみに、Javaの用語というわけではなく、プログラミングの一般用語です。 # そもそも、「関数」っていうのは、厳密にはJavaでは使わない用語です。 |
|
投稿日時: 2004-07-09 16:33
「Wrapper」という英単語の意味を調べてみましたか?ですが、「包む」だけでは全然意味がわかりません。ラッピングしてどうするかが知りたいです。何か目的があってラッピングするのでだと思うのですが、そこがわかりません。機種依存をなくすとか書いてあったりしたんですが、もう一つピンときません。ちなみにラッパークラスも同様です。
すいませんが、ご教授願います。 |
|
投稿日時: 2004-07-09 16:54
ラッパクラスの代表的な使い方は、既存のクラスを別のインタフェースに適合するように
することです。これによって、例えばフレームワークに適合しないクラスをフレームワークに プラグインするようにできます。 これは「Adaptorパターン」という、デザインパターンの一種ですが、Adaptorパターンの 別名がWrapperだったりします。 別の使い方としては、既存のクラスのままだと少し使い方が煩雑なので、簡便に使えるように クラスまたはメソッドを提供する、というものがあります。例えば元のクラスのままだと、 「生成」「メソッドAを呼び出す」「メソッドBを呼び出す」「…」といった手順を踏まなければ ならない処理を、メソッド一つで実行する、といった使い方です。 |
|
投稿日時: 2004-07-09 16:58
一般的には なんらかのライブラリーなり APIなり クラスなどがあって
通常ならばそれなの物を直接呼び出すのですが、なんらかの理由により 間接的に処理したいときが、あります。それをラッパーといいます。 例 ほげほげ.ddl というのがある。直接呼び出して使うはなにかとめんどくさい だから ぴよぴよというラッパーを作って簡単に呼び出しが、できるようにしたり 生のAPIをこねくりまわす必要がなくなります このほげほげ.ddl の機能を 使うときは、ぴよぴよを使えば、処理が簡潔にあるいは ほげほげ.ddl が拡張されても ぴよぴよを使う限り、コードの修正は最小限になります。 |
|
投稿日時: 2004-07-09 17:13
使い道はいろいろありますが、「機種依存を無くす」という例だと、
ある同じような機能を実現するクラスがWindows用(AbcForWinクラス)と Linux用(AbcjForLinuxクラス)で別々にあったとします。 このままだと、このクラスを利用するプログラムでは、実行環境がWindowsなのか Linuxなのかを意識しながら使い分けなければいけません。 そこで、ラッパークラス(Abcクラス)を用意して、このクラスが環境を判断して AbcForWinとAbcForLinuxを使い分けるように作っておくと、利用するプログラム側では 常にAbcクラスを使えばいいということになって便利です。 また、後でMac用クラス(AbcForMac)が増えたとしても、Abcクラスを修正すれば、それを使っているプログラムは修正しなくて済みます。 ・・って感じでしょうか? |
|
投稿日時: 2004-07-09 17:41
二又のコンセントがある。そこへ三叉のコネクターを
挿そうとするも失敗(当たり前) そこで、二又のコンセントに三叉変換機をつけて対応した。 この時の三叉変換機こそがラッパーだ!!!!! この時 「二又コンセントに三叉の機能を持たせて作ったラッパークラス」 とも言い換えられるかな? ラッパーの全てではないが、こんな感じ? # Adapterパターンですが。 |