Show
Ignore:
Timestamp:
08/29/08 18:53:48 (4 months ago)
Author:
ogawa
Message:

make use of Factory pattern for CalendarDriver?.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • cybozu2ical/trunk/lib/WWW/CybozuOffice6/Calendar.pm

    r510 r512  
    1919    my $cal     = bless \%param, $class; 
    2020    $cal->{url} ||= delete $cal->{cybozu_url}; 
    21     $cal->driver_init; 
    22     $cal; 
    23 } 
    24  
    25 sub driver_init { 
    26     my $cal = shift; 
    27     my $driver = $cal->{calendar_driver} || 'ApiCalendar'; 
    28     $driver = 'WWW::CybozuOffice6::CalendarDriver::' . $driver 
    29       if $driver !~ m/^WWW::CybozuOffice6::CalendarDriver::/; 
    30     eval "use $driver;"; 
    31     $cal->{calendar_driver} = $driver; 
     21    $cal->{calendar_driver} = 
     22      WWW::CybozuOffice6::CalendarDriverFactory->get_driver( 
     23        $cal->{calendar_driver} ) 
     24      unless ref $cal->{calendar_driver}; 
    3225    $cal; 
    3326} 
     
    6659} 
    6760 
     61package WWW::CybozuOffice6::CalendarDriverFactory; 
     62 
     63sub get_driver { 
     64    my $class = shift; 
     65    my ($driver_name) = @_; 
     66    $driver_name ||= 'ApiCalendar'; 
     67    $driver_name = 'WWW::CybozuOffice6::CalendarDriver::' . $driver_name 
     68      if $driver_name !~ m/^WWW::CybozuOffice6::CalendarDriver::/; 
     69    eval "use $driver_name;"; 
     70    $driver_name->new; 
     71} 
     72 
    68731; 
    6974__END__