gpt4 book ai didi

perl - 为 Moose 应用程序构建插件系统的最佳选择是什么?

转载 作者:行者123 更新时间:2023-12-04 19:19:59 24 4
gpt4 key购买 nike

我想编写一个可以通过插件扩展的应用程序,使用 Perl 和 Moose .我知道有一些 Moose 模块可以用来编写插件,而且我知道还有其他方法。

我有哪些选择?我应该知道什么?在实现插件系统之前我应该​​考虑什么?

最佳答案

有几种方法可以提供可扩展性;允许用户将角色应用到您的类,或允许他们传入做有趣事情的小对象(委托(delegate))。代表比角色表现更好,但需要您预先计划所有可扩展性。角色允许更多的临时行为。

以下是采用每种方法的两个 CPAN 发行版:

代表:AnyEvent::Subprocess

角色:Devel::REPL

插件角色通过 MooseX::Object::Pluggable 实现.

代表可以随心所欲地实现;该模式是将执行某些角色 R 的类 A 的实例传递给类 C,然后类 C 委托(delegate)给 A。这是一个示例:

package Compare;
use Moose::Role;
requires 'compare';


package SpaceshipCompare;
use Moose;
with 'Compare';

sub compare { my ($a, $b) = @_; return $a <=> $b }

package Sort;
use Moose;

has 'comparer' => (
is => 'ro',
does => 'Compare',
handles => 'Compare',
required => 1,
);

sub my_sort {
my ($self, @list) = @_;
return sort { $self->compare($a, $b) } @list;
}

然后你像这样使用它:
my $sorter = Sort->new( comparer => SpaceshipCompare->new );
my @sorted = $sorter->my_sort("1one", "0", "43");

如果你想改变 Sort 的工作方式,你只需创建一个新的类来执行 Compare角色,然后将一个实例传递给 Sort 的构造函数。即时灵 active !

关于perl - 为 Moose 应用程序构建插件系统的最佳选择是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4815432/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com