Cache-Cache-1.01 > Cache::BaseCache
名前¶
Cache::BaseCache -- 抽象キャッシュ基本クラス
説明¶
BaseCacheはキャッシュの全てのインスタンスに共通の機能を提供します。 これはキャッシュ実行のためのスーパークラスとして利用されるよう 設計されているという点においてCacheUriltsパッケージとは違います。
概要¶
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;
}
参考資料¶
Cache::Cache, Cache::FileCache, Cache::MemoryCache
作者¶
Original author: DeWitt Clinton <[email protected]>
Last author: $Author$
Copyright (C) 2001, 2002 DeWitt Clinton