角色
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";
}