角色
Perl 中的一个角色基本上就是
- 一组方法和属性
- 直接注入一堂课。
角色提供了一个功能,可以组成 (或应用于 )任何类(据说可以使用该角色)。角色不能被继承,但可能被另一个角色占用。
角色可能还需要使用类来实现某些方法,而不是实现方法本身(就像 Java 或 C#中的接口一样)。
Perl 没有内置的角色支持,但有 CPAN 类提供这样的支持。
穆斯::角色
package Chatty;
use Moose::Role;
requires 'introduce'; # a method consuming classes must implement
sub greet { # a method already implemented in the role
print "Hi!\n";
}
package Parrot;
use Moose;
with 'Chatty';
sub introduce {
print "I'm Buddy.\n";
}
角色::微小
如果你的 OO 系统不支持角色(例如 Class::Accessor
或 Class::Tiny
),请使用此选项。不支持属性。
package Chatty;
use Role::Tiny;
requires 'introduce'; # a method consuming classes must implement
sub greet { # a method already implemented in the role
print "Hi!\n";
}
package Parrot;
use Class::Tiny;
use Role::Tiny::With;
with 'Chatty';
sub introduce {
print "I'm Buddy.\n";
}