由于Perl/Moose在调用子类BUILD函数之前总是调用基类的BUILD函数,因此每次实例化子类时都会有一个新的基类实例.
如何创建可供所有子类使用的静态变量,或者如何创建静态基类或抽象类?(这种做法有意义吗?)
我正在尝试创建一个变量,该变量动态启用或禁用在基类中运行时定义但可从子类访问的函数的某些功能.
所以,如果我做了类似的事情
my obj = My::childObject_1->new( 'use_my_var' => 1 );
Run Code Online (Sandbox Code Playgroud)
它也是如此
my obj2 = My::childObject_2->new();
my obj3 = My::childObject_3->new();
Run Code Online (Sandbox Code Playgroud)
无需专门定义该变量.除非
my obj4 = My::childObject_2->new( use_my_var' => 0 );
Run Code Online (Sandbox Code Playgroud)
在这种情况下,对于所有子类,从那一点起它将是假的,因为它们都是
extends My::BaseObject
Run Code Online (Sandbox Code Playgroud)
另外,是否有描述此行为的设计模式?
(注意:我在共享系统上,所以我无法安装MooseX - 或者至少我无法弄清楚如何在我的用户目录中设置本地PERL5LIB模块安装= /所以只有Moose解决方案现在有帮助!)