请教一个高级面向对象问题!

请教一个高级面向对象问题!

请教一个高级面向对象问题!
我想实现一个功能,即。在一个程序中,每次new一个新的对象之前,都先启动一个方法。并将数据传入。就是这样的一个钩子。请教大家了!
new 的时候把数据传入不就.
new 的时候把数据传入不就可以了?

sub new {
my $class = shift;
_init( @_ ) if @_;
...
..
}

sub _init { }
我向要跨模块的。而且有非.
我向要跨模块的。而且有非常非常多的模块。
[quote]--$ cat MyBase..
[quote]
$ cat MyBase.pm
package MyBase;

use strict;
use warnings;

my $_GLOBAL_DATA;

sub init_data {
$_GLOBAL_DATA = $_[1];
}

sub get_data {
return $_GLOBAL_DATA;
}

1;

$ cat MyApp1.pm
package MyApp1;

use base 'MyBase';

sub do_something_about_data {
my $self = shift;
print $self->get_data;
};

1;

$ cat t.pl
#!/usr/bin/perl

use strict;
use warnings;
use MyBase;
use MyApp1;
# use MyApp2;

MyBase->init_data("bla bla");

MyApp1->do_something_about_data;
# MyApp2->do_somethine_else_about_data;

[/quote]

init_data 后,其他从 MyBase 继承的 subclass 就可以使用同一个 data 了。这基本上就是 Singleton 的概念,你可以 google 来了解一下。http://en.wikipedia.org/wiki/Singleton_pattern

Perl 的例子可以看看 Class::Singleton
http://search.cpan.org/perldoc?Class::Singleton




   

谢谢指导!.