« C言語でIterator | トップページ | はてなスター設置 »

2007年7月14日 (土)

C言語でAdapter

Adapterパターンは、あるものとあるものを繋ぐために間に何かをはさむパターン。

Adapterに関して言えば、オブジェクト指向言語より手続き型言語の方が一個関数を定義するだけなので、作りやすいと思う。

例えばmallocというメモリ領域を動的にとる関数が標準ライブラリで提供されているが、引数が確保したいバイト数になっている。そのため、int型を10個分確保したいときは、

int *array = malloc(sizeof(int) * 10);

の様に書かないといけないのでちょっと面倒だ。そこで、型と数の二つを引数で与えるとその分のメモリ領域を取れるようにしたいと思ったとする。

そのとき新たに関数を作ると、

  1. 一から関数を作るのは作るための労力がかかる
  2. もしもmallocが変わったときに対応する必要がでてくるかもしれない

Adapterパターンを使えば以上の問題に対応することができる。具体的には、

#define malloc2(type, number) (malloc(sizeof(type) * (number)))

という内部でmallocを使う新しい関数(マクロ)を作る。そうすると、

int *array = malloc2(int, 10);

のように望んでいた使い方ができる関数ができる。

|

« C言語でIterator | トップページ | はてなスター設置 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/126478/15749364

この記事へのトラックバック一覧です: C言語でAdapter:

« C言語でIterator | トップページ | はてなスター設置 »