当前位置:  开发笔记 > 编程语言 > 正文

在Perl中清理策略模式的实现

如何解决《在Perl中清理策略模式的实现》经验,为你挑选了1个好方法。

如何在Perl中编写策略模式的干净实现?我希望以一种利用Perl功能的方式来实现.



1> tsee..:

这实际上取决于你所说的"干净实施".与任何其他语言一样,您可以使用具有多态性的Perl对象系统为您执行此操作.但是,由于Perl具有第一类函数,因此通常不会显式编码此模式.Leon Timmermans的榜样

sort { lc($a) cmp lc($b) } @items

非常优雅地展示了这一点.

但是,如果你正在寻找像C++那样的"正式"实现,那么使用Perl + Moose可能就像是这样.这只是来自维基百科 - 战略模式的C++代码的翻译,除了我使用Moose对委托的支持.

package StrategyInterface;
use Moose::Role;
requires 'run';


package Context;
use Moose;
has 'strategy' => (
  is      => 'rw',
  isa     => 'StrategyInterface',
  handles => [ 'run' ],
);


package SomeStrategy;
use Moose;
with 'StrategyInterface';
sub run { warn "applying SomeStrategy!\n"; }


package AnotherStrategy;
use Moose;
with 'StrategyInterface';
sub run { warn "applying AnotherStrategy!\n"; }


###############
package main;
my $contextOne = Context->new(
  strategy => SomeStrategy->new()
);

my $contextTwo = Context->new(
  strategy => AnotherStrategy->new()
);

$contextOne->run();
$contextTwo->run();

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有