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

在Perl中清理策略模式的实现,第1张

概述如何在Perl中编写策略模式的干净实现?我希望以一种利用Perl功能的方式来实现. 这实际上取决于你所说的“干净实施”.与任何其他语言一样,您可以使用具有多态性的Perl对象系统为您执行此 *** 作.但是,由于Perl具有第一类函数,因此通常不会显式编码此模式. Leon Timmermans的榜样 sort { lc($a) cmp lc($b) } @items 非常优雅地展示了这一点. 但是,如果 如何在Perl中编写策略模式的干净实现?我希望以一种利用Perl功能的方式来实现.解决方法 这实际上取决于你所说的“干净实施”.与任何其他语言一样,您可以使用具有多态性的Perl对象系统为您执行此 *** 作.但是,由于Perl具有第一类函数,因此通常不会显式编码此模式. Leon Timmermans的榜样

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

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

但是,如果你正在寻找一个“正式”实现,就像在C中那样,这就是使用Perl Moose的样子.这只是从Wikipedia — Strategy pattern开始的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();
总结

以上是内存溢出为你收集整理的在Perl中清理策略模式的实现全部内容,希望文章能够帮你解决在Perl中清理策略模式的实现所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1213560.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-04
下一篇2022-06-04

发表评论

登录后才能评论

评论列表(0条)

    保存