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 <dewitt@unto.net>

Last author: $Author$

Copyright (C) 2001, 2002 DeWitt Clinton