Javaなんかで、DI(Dependency Injection)っつー、
概念がありまして、
妙にもてはやらされていたころが、あったんですが、
(今も?)
これがなんなのか、よくわかってませんでした。
この前、
『Dependency Injection の基本的なアイディア - いやなブログ』
を見て、氷解。
そうか、依存性注入ってそういうことか!
Javaとかだと、フレームワークとか使うみたいですが、
そんなんなしにして、
手っ取り早くDelphiでもできんのかなーと思っておりました。
interfaceを使うのもなーってとき。
小規模な時。
手っ取り早い方法を書いてみたい。
(interface版は、また後で)
Delphiなら、メソッドポインタ(TNotifyEventやら)を作って、
依存性を外部におけばよい。
それだけじゃん。
例えば、THogeってオブジェクトがあって、
ログをとりたいが、ログ取り用の Logger オブジェクトは一応あるんだが、
それに依存させたくないなーって、場合。
※HogeOnLog;が、間違っていたので修正orz
おー、簡単にできるじゃないか。
っていうか、Delphi使いなら、誰でも知っている、
あたり前田のクラッカーなテクニック。
これで、使う側でメソッドポインタを定義して、いろいろ指定してやれば、
他のユニットに依存しなくてすむ。
まー、もっとも、上のページの Ruby の例のような、
柔軟にはいきませんけど。
(あれは、型なし言語だからできる技だよな)
カテゴリ: [ Delphi ]
コメント (3)
困った時はやっぱり関数ポインタだよね!
投稿者: Ko-Ta | 2007年04月16日 03:24
日時: 2007年04月16日 03:24
関数ポインタで困ったらどうしたらいいですか!
投稿者: uox | 2007年04月16日 15:44
日時: 2007年04月16日 15:44
メッッソドポインタ!メッッソドポインタ!
何は無くともメッソd(ry
・・・困ったときは、interface使えばいけそうですが、interface版も、そのうち書くかもかかないかも
投稿者: TOBY | 2007年04月19日 19:55
日時: 2007年04月19日 19:55