[kotlin] 데코레이터 패턴의 적용 방법

데코레이터 패턴은 객체지향 프로그래밍의 디자인 패턴 중 하나로, 기존 객체의 구조를 변경하지 않고 동적으로 새로운 기능을 추가할 수 있도록 해줍니다.

데코레이터 패턴의 개요

데코레이터 패턴은 객체를 래핑하여 새로운 동작을 추가하거나 수정하는 패턴입니다. 예를 들어, 유저의 정보를 출력하는 기본 기능이 있는데, 이에 추가적으로 유저의 권한에 따라 다른 정보를 출력하는 기능을 추가하고 싶을 때 데코레이터 패턴을 사용할 수 있습니다.

Kotlin에서 데코레이터 패턴 구현하기

다음은 Kotlin에서 데코레이터 패턴을 구현하는 간단한 예제 코드입니다.

// 기본 인터페이스
interface UserInfo {
    fun getUserInfo(): String
}

// 기본 구현
class BasicUserInfo : UserInfo {
    override fun getUserInfo(): String {
        return "User Info: Name, Email"
    }
}

// 데코레이터
class PermissionDecorator(private val userInfo: UserInfo) : UserInfo {
    override fun getUserInfo(): String {
        return "${userInfo.getUserInfo()}, Permissions"
    }
}

fun main() {
    val basicUserInfo: UserInfo = BasicUserInfo()
    println(basicUserInfo.getUserInfo())

    val userInfoWithPermission: UserInfo = PermissionDecorator(basicUserInfo)
    println(userInfoWithPermission.getUserInfo())
}

위 코드는 UserInfo 인터페이스를 정의하고, 이를 구현하는 BasicUserInfo 클래스를 만듭니다. 그리고 PermissionDecorator 클래스는 UserInfo를 구현하여 추가적인 정보를 추가합니다. main 함수에서는 기본 유저 정보와 권한이 추가된 유저 정보를 출력하는 예시가 제시되어 있습니다.

결론

데코레이터 패턴은 객체의 복잡성을 줄이면서도 유연하게 기능을 확장할 수 있는 강력한 도구입니다. Kotlin에서는 이를 효과적으로 활용하여 객체의 동작을 동적으로 확장할 수 있습니다.

더 많은 자세한 내용은 Kotlin 데코레이터 패턴을 참고하시기 바랍니다.