Perl에서 코드 재사용을 처리하는 여러 가지 방법이 있습니다. 많은 예제는 접근 방식과 다른 클래스의 차이를 명확하게 나타내지 않으며 적어도 두 가지를 사용합니다.
OO 스타일을 최대한 사용하는 것이 좋으며 상대적으로 작은 유틸리티 함수 클러스터가 필요한 클래스가 3 개 이상인 경우에만 EXPORTER를 사용하십시오.
그래서:
package Foo;
use Foo::Util qw(util) ;
use strict ;
sub foo {
}
sub bar {
}
1;
package Foo::Bar ;
use Foo ;
use Foo::Util qw(util) ;
our @ISA = qw(Foo) ;
use strict ;
sub bar {
}
1;
package Foo::Util ;
use Exporter ;
our @ISA = qw(Exporter) ;
our @EXPORT = qw(util) ;
use strict ;
sub util {
}
1;
EXPORTER
함수가 x 또는 y 축에서 현재 패키지로 들어오는 것처럼 OO 접근 방식과 접근 방식을 코드 가용성의 두 가지 차원 으로 시각화하는 것을 선호합니다 .
위의 예에서 :
Foo::Bar
foo()
클래스 에서 메소드 를 파생시킵니다Foo
Foo::Bar
bar()
다형성 메소드 bar()
가 클래스에서 파생되지 않도록 메소드를 정의합니다.Foo
클래스 둘 Foo
과 Foo::Bar
수신 EXPORTED
기능 ( 하지 방법 ) util()
패키지 (에서 하지 클래스 )Foo::Util
두 시스템은 복잡해 보이지만 매우 실용적인 유틸리티입니다. 여러 상속을 추적하면 까다로울 수 있습니다. 따라서 코드 가용성의 두 번째 차원을 가지면 상속 트리를 작고 관리하기 쉽게 유지할 수 있습니다.
일반적으로 함수가 모 놀리 식이고 상대적으로 멍청한 경우 EXPORTER를 사용하고, 그렇지 않으면 상속을 사용하십시오. 그러나 할 EXPORTER
일이 3 개 또는 4 개가 넘는 패키지를 포함하지 않는 한 전혀 사용하지 않아도 됩니다.