角色

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