Cache::Pluggable

Cache::な名前空間を持つライブラリは、get/setなどのインターフェースがわりとそろえてあるのですが、ライブラリによって微妙に挙動が違ったりして、ちょっと別のライブラリを検証してみたり、とかが意外としづらいです。

例えば、Cache::Memcached::FastではhashrefなどをStorableでシリアライズしつつ透過的にget/setしてくれますが、Cache::KyotoTycoonではそういう機能はありません。

そこで、wrapperを書いてアプリケーションからは使うようにしたりするわけですが、毎回似たようなものを生やしたりするのは飽きたよ、ということで、Pluginを書いてやって、コアはシンプルな機能のままで、Pluginを抜き差しするだけで挙動を変えられるようにしよう、ということでCache::Pluggableというやつを書いてみました。

Plugin機能は元々あるメソッドの機能を上書きとかして挙動をかえまくりたかった関係で、Mouse::Roleをつかってみました。

同じメソッドをmethod modifiersしまくりなので、ちょっと使うPluginが増えてくると、Pluginのロード順を気にする必要があるのがよろしくないかもしれない。