Perl에서 전략 패턴을 완전히 구현하려면 어떻게해야합니까? Perl의 기능을 활용하는 방식으로하고 싶습니다.Perl의 전략 패턴 구현 완료
3
A
답변
5
정말 "깨끗한 구현"이 무슨 뜻인지에 달려 있습니다. 다른 언어에서와 마찬가지로 Perl의 객체 시스템을 다형성과 함께 사용하여이를 수행 할 수 있습니다. 그러나 Perl에는 퍼스트 클래스 함수가 있으므로이 패턴은 일반적으로 명시 적으로 코드화되지 않습니다. Leon Timmermans의 예는 다음과 같습니다.
sort { lc($a) cmp lc($b) } @items
매우 실용적입니다.
그러나 C++에서와 같이 "공식적인"구현을 찾고 있다면 Perl + Moose을 사용하는 것과 같습니다. 이것은 위임에 대한 무스의 지원을 사용하고 있다는 것을 제외하고는 Wikipedia -- Strategy pattern의 C++ 코드를 번역 한 것입니다.
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();
4
하위 참조와 클로저를 사용하십시오. 이 좋은 예를 들면
sort { lc($a) cmp lc($b) } @items
3
이 문서가 유용 할 수 있습니다. Perl에서 전략 패턴을 사용하는 예를 다룹니다. http://www.perl.com/pub/a/2003/08/07/design2.html
관련 문제
- 1. Coredata : 전략 패턴 구현
- 2. 전략 패턴 구현
- 3. 리턴 클래스가 다른 전략 패턴 구현
- 4. 디자인 패턴 - 전략 패턴
- 5. 기본 전략. 전략 패턴 C#을
- 6. 리팩터 도움 - 전략 패턴
- 7. 템플릿 전략 패턴
- 8. 전략 패턴 질문 - PHP
- 9. 전략 패턴 도움 필요
- 10. C# 전략 패턴 디자인 문제
- 11. 레이크 전략, DotNet 구현
- 12. 생성자에 대한 전략 구현
- 13. 작업 완료 구현 방법
- 14. 매개 변수화 된 전략 패턴
- 15. 기본 전략을 사용한 전략 패턴
- 16. C++ 전략 디자인 패턴, 인터페이스 배열 만들기
- 17. 유니티를 사용한 전략 패턴 및 의존성 삽입
- 18. MapKit/CoreLocation/ShowsUserLocation 구현 전략
- 19. 명령 패턴 구현
- 20. 인터셉터 패턴 구현 문제
- 21. 어댑터 패턴 구현
- 22. 리포지토리 패턴 구현 경험
- 23. 사양 패턴 구현 도움말
- 24. C에서 글리프 패턴 구현
- 25. 구현 공급자 패턴?
- 26. 외관 디자인 패턴 - 구현
- 27. 열린 원칙 및 전략 패턴 질문
- 28. 문자열 전략 패턴 내가 AS3에서 일하고 있어요
- 29. 템플릿 방법 및 전략 디자인 패턴
- 30. 전략 IOC 컨테이너가있는 디자인 패턴 - 특별히 NXject