위임 패턴
Delegation pattern소프트웨어 엔지니어링에서 위임 패턴은 객체 구성이 상속과 동일한 코드 재사용을 달성할 수 있도록 하는 객체 지향 설계 패턴이다.
위임에서 오브젝트는 두 번째 오브젝트(위임자)에 위임하여 요청을 처리한다.대리자는 도우미 개체지만 원래 컨텍스트가 있는 개체.위임에 대한 언어 수준의 지원을 통해 이 작업은 다음을 통해 암시적으로 수행된다.self
대리자에서 대리자(대리자)가 아닌 원래(수동자) 객체를 참조한다.대신 위임 패턴에서 이 작업은 원래 개체를 위임자에게 명시적으로 전달하여 메소드에 대한 인수로서 수행된다.[1]"위임"은 흔히 포워딩의 구별되는 개념을 가리키기 위해 느슨하게 사용되는데, 송신 객체는 단순히 수신 객체에 해당하는 멤버를 사용하며, 원본 객체가 아닌 수신 객체의 맥락에서 평가된다.
이 문서는 원래 통화가 아니라 위임 호출을 주고받는 개체를 강조하는 "수신 개체/수신 개체"가 아니라 두 개체에 대해 "수신 개체/수신 개체"를 사용한다는 점에 유의하십시오.
정의
Grady Booch는 1994년 Gamma et al. 1994에 대한 소개에서 위임을 다음과 같이 정의했다.
위임은 재사용을 위해 상속만큼 강력한 구성을 만드는 방법이다[Lie86, JZ91].위임에서는 요청을 처리하는 데 두 가지 개체가 관여한다. 즉, 수신 물체가 작업을 대리인에게 위임한다.이것은 하위 클래스가 상위 클래스에 대한 요청을 연기하는 것과 유사하다.그러나 상속이 있는 경우 상속된 연산은 항상 다음을 통해 수신하는 대상을 가리킬 수 있다.
this
C++의 멤버 변수self
스몰토크로위임을 통해 동일한 효과를 얻기 위해, 수신자는 위임된 작업이 수신자를 참조하도록 위임자에게 스스로 전달한다.[2]
예
아래 예에서(Kotlin 프로그래밍 언어 사용) 클래스 윈도우가area()
내부 직사각형 객체(대리자)로 호출한다.
계급 직사각형(발랄하게 하다 너비: 인트, 발랄하게 하다 높이: 인트) { 재미있다 면적() = 너비 * 높이 } 계급 창(발랄하게 하다 한도를 정하다: 직사각형) { //위임 재미있다 면적() = 한도를 정하다.면적() }
언어 지원
일부 언어에는 위임에 대한 특별 지원이 내장되어 있다.[3]예를 들어, 코틀린 프로그래밍 언어에서는 다음과 같이 쓸 수 있다.
접점 폐쇄형 셰이프 { 재미있다 면적(): 인트 } 계급 직사각형(발랄하게 하다 너비: 인트, 발랄하게 하다 높이: 인트) : 폐쇄형 셰이프 { 무효로 하다 재미있다 면적() = 너비 * 높이 } 계급 창(사유의 발랄하게 하다 한도를 정하다: 폐쇄형 셰이프) : 폐쇄형 셰이프 에 의해 한도를 정하다
참고 항목
참조
- ^ 감마 외 1994
- ^ Gamma, Erich; Helm, Richard; Johnson, Ralph; Vlissides, John (1995). Design patterns : elements of reusable object-oriented software (14. print. ed.). Reading, Mass.: Addison-Wesley. p. 20. ISBN 0-201-63361-2.
- ^ "Delegation - Kotlin Programming Language". Kotlin. Retrieved 2019-03-23.