2013年4月19日金曜日

Object::Containerって何だ?

このへん見とくのが分かりやすそう。
http://perl-users.jp/articles/advent-calendar/2011/casual/10
http://search.cpan.org/~typester/Object-Container-0.08/lib/Object/Container/ja.pod

珍しくCPANの説明も比較的わかりやすい。
どうやらいくつものモジュールをいちいちnewするのめんどいしコストかかるじゃん、
そうだ最初に一度にnewしといてキャッシュしとけば便利じゃね?というもののようだ。
newしたもの、つまりインスタンスを大量に格納しておくモジュールだから「コンテナ」ということか。

package MyContainer;
use Object::Container '-base';
my @object = qw/

 foo
 bar

/;
for (@object) {
 register($_);
}

みたいに予めインスタンスをキャッシュするモジュールを作っておいて
他のモジュールで

package Hoge;
use MyContainer;
my $object_foo = MyContainer->get('foo');
my $object_bar = MyContainer->get('bar');

みたいにしてあれこれやればよいということだと思う。