Perl - Role
추상화(Abstraction)
복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간츄려 내는 것
즉 복잡한 것을 단순화 한 것
추상화 방법으로는 일반화(Generalization), 집단화(Aggreation), 연관화(Association) 등이 있음
Roles
Java에서 Interface와 비슷한 것
클래스간에 공유 할 수 있는 메소드를 캡슐화 한 것
Roles는 클래스가 아님
생성된 Role이 다른 곳에서 사용될때 consume 되었다고 함
Role 생성
package foo;
use Moose::Role;
sub temp{}
일단 use Moose::Role;
이 구문이 들어있으면 Role임
그 외에는 그냥 클래스 작성하듯이 작성
Role Consume
with foo;
이 구문으로 해당 role을 가져옴
패키지명이 들어가야며 여러 role을 ,로 구분하여 여러개를 동시에 가져올 수도 있음
현재 패키지에 정의되어 있지 않은 temp{}
를 이제 사용할 수 있음
추상 메소드
Role 클래스에 requires '함수명'
으로 가상 메소드를 생성 할 수 있음
이 Role을 사용하는 모든 모듈은 전부 requires에 정의된 함수를 반드시 정의 해줘야 함
해당 함수가 없으면 예외 발생함