角色

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::AccessorClass::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";
}