=encoding euc-jp =head1 名前 Cache::BaseCache -- 抽象キャッシュ基本クラス =head1 説明 BaseCacheはキャッシュの全てのインスタンスに共通の機能を提供します。 これはキャッシュ実行のためのスーパークラスとして利用されるよう 設計されているという点においてCacheUriltsパッケージとは違います。 =head1 概要 Cache::BaseCacheはキャッシュ実装のためのスーパークラスとして利用される よう設計されています。BaseCacheを利用する最も効果的な方法は、 それは永続化メカニズムを取り出すために使われる、保護された (=protected)_set_backendメソッドを使うことです。 そうすればサブクラスはBaseCacheでのget、setなどの実装を継承することができます。 しかしPerlでは静的なメソッドを継承することが困難なことから、サブクラスは 明示的にClear、PuregeそしてSizeを実装する必要があることのほうがよくあります。 またに、オブジェクトが組み立てられた後、_complete_initializationルーチンが 呼び出されるようにファクトリー・パターンが使われなければなりません。 package Cache::MyCache; use vars qw( @ISA ); use Cache::BaseCache; use Cache::MyBackend; @ISA = qw( Cache::BaseCache ); sub new { my ( $self ) = _new( @_ ); $self->_complete_initialization( ); return $self; } sub _new { my ( $proto, $p_options_hash_ref ) = @_; my $class = ref( $proto ) || $proto; my $self = $class->SUPER::_new( $p_options_hash_ref ); $self->_set_backend( new Cache::MyBackend( ) ); return $self; } sub Clear { foreach my $namespace ( _Namespaces( ) ) { _Get_Backend( )->delete_namespace( $namespace ); } } sub Purge { foreach my $namespace ( _Namespaces( ) ) { _Get_Cache( $namespace )->purge( ); } } sub Size { my $size = 0; foreach my $namespace ( _Namespaces( ) ) { $size += _Get_Cache( $namespace )->size( ); } return $size; } =head1 参考資料 Cache::Cache, Cache::FileCache, Cache::MemoryCache =head1 作者 Original author: DeWitt Clinton Last author: $Author: iwai $ Copyright (C) 2001, 2002 DeWitt Clinton