[kotlin] 코틀린 디자인 패턴 개요
코틀린은 실용적이고 간결한 문법으로 인기를 얻는 프로그래밍 언어입니다. 코틀린은 자바 가상 머신 (JVM) 상에서 동작하기 때문에 자바와의 상호운용성도 우수합니다. 이번 블로그에서는 코틀린에서 흔히 사용되는 디자인 패턴 중 몇 가지를 살펴볼 것입니다.
팩토리 메서드 패턴
팩토리 메서드 패턴은 객체 생성을 캡슐화하는 패턴으로, 객체 생성 로직을 서브클래스로 분리함으로써 유연성을 확보합니다. 코틀린에서는 interface
나 abstract class
의 활용을 통해 팩토리 메서드를 구현할 수 있습니다.
interface Shape {
fun draw()
}
class Circle : Shape {
override fun draw() {
println("원 그리기")
}
}
class Rectangle : Shape {
override fun draw() {
println("사각형 그리기")
}
}
interface ShapeFactory {
fun createShape(): Shape
}
class CircleFactory : ShapeFactory {
override fun createShape(): Shape {
return Circle()
}
}
class RectangleFactory : ShapeFactory {
override fun createShape(): Shape {
return Rectangle()
}
}
빌더 패턴
빌더 패턴은 복잡한 객체의 생성 과정을 단순화하는 패턴으로, 객체를 조립하여 생성하는 방식입니다. 코틀린에서는 data class
와 함께 빌더 패턴을 쉽게 구현할 수 있습니다.
data class User(val id: Long, val name: String, val email: String) {
data class Builder(var id: Long = 0, var name: String = "", var email: String = "") {
fun build() = User(id, name, email)
}
}
val user = User.Builder()
.id(1)
.name("John")
.email("john@example.com")
.build()
싱글턴 패턴
싱글턴 패턴은 어플리케이션이 실행되는 동안 단 하나의 객체 인스턴스만을 유지하도록 하는 패턴입니다. 코틀린에서는 object
키워드를 사용하여 싱글턴 객체를 선언할 수 있습니다.
object UserManager {
fun addUser(user: User) {
// 사용자 추가 로직
}
fun deleteUser(userId: Long) {
// 사용자 삭제 로직
}
}
스트래티지 패턴
스트래티지 패턴은 동일 계열의 알고리즘을 정의하고, 각 알고리즘을 캡슐화하여 교체가 가능하도록 하는 패턴입니다. 코틀린에서는 클로저나 람다를 활용하여 스트래티지 패턴을 쉽게 구현할 수 있습니다.
class PaymentProcessor(private val strategy: () -> Unit) {
fun processPayment() {
// 결제 처리 로직
strategy()
}
}
val receiptPrinterStrategy: () -> Unit = { println("영수증 출력") }
val emailSenderStrategy: () -> Unit = { println("이메일 전송") }
val paymentProcessor1 = PaymentProcessor(receiptPrinterStrategy)
val paymentProcessor2 = PaymentProcessor(emailSenderStrategy)
코틀린에서는 다양한 디자인 패턴을 자유롭게 활용할 수 있으며, 각 패턴을 적재적소에 사용하여 코드의 유지보수성, 확장성, 가독성을 향상시킬 수 있습니다.
이상으로 코틀린에서의 디자인 패턴에 대한 개요를 살펴보았습니다. 감사합니다.