最近読んだ記事、"Use Inversion of Control in method signatures"
DeveloperWorksに上記の記事(http://www.ibm.com/developerworks/java/library/j-ioc/)が掲載されていたので読んでみました。メソッドの引数をValue Objectにする代わりにinterfaceにして実装はIoCコンテナの機能を利用して与える方法が簡単に紹介されています。コンポーネントを呼び出す側にdependency componentが注入されるようになるというものです。この方法を使うと呼び出し側が使おうとしているコンポーネントのメソッドの引数の型を気にしなくてよいこと。パイプラインパターン(カートを見に行って、次にDBを参照し、、、、価格を計算のような順次に行われる一連の処理)では特にメリットがあること。などが書かれていました。
メソッドの引数にinterfaceの型を指定するのは特に目新しいものではありませんので、ここにもIoCを使えるよ、というちょっとした提案という感じの記事でしょうか。ぜひ読むべきというほどではないですが、このような設計にしたいときのinterface定義の小技は参考になるかもしれません。
AOPのCAESAR、、、一文字違い?!
"Use Inversion ..." のResourceからたどっていたところにhttp://java-source.net/というJavaのオープンソース製品一覧があったのですが、Aspect-Orientedの項目にCAESARという一文字違いみたいなものがありました(正確にはAとEの並びも違う)。CAESAR(http://caesarj.org/)の方はAOP言語なので、Seasarとはかなり方向が違うのですが、つづりも発音も似ているし、AOPという共通のテーマまであってまぎらわしいです。正確にはCaesarJらしく、Jが付くみたいですね。日本で使っている人はあまりいないのかな???日本語限定でぐぐってみても、該当しそうなサイトは一件しかありませんでした。