Builder 패턴은 객체 생성 과정과 표현 방식을 분리하여 동일한 생성 절차에서 서로 다른 표현 결과를 생성할 수 있게 하는 패턴입니다.
복잡한 객체의 생성과정을 단계별로 나눠 명확하게 표현하며, 필요한 경우에만 특정 메소드를 호출하여 객체를 생성할 수 있습니다.
Java에서의 Builder 패턴 예제
public class Computer {
private String CPU;
private String RAM;
private String storage;
private Computer(Builder builder) {
this.CPU = builder.CPU;
this.RAM = builder.RAM;
this.storage = builder.storage;
}
public static class Builder {
private String CPU;
private String RAM;
private String storage;
public Builder setCPU(String CPU) {
this.CPU = CPU;
return this;
}
public Builder setRAM(String RAM) {
this.RAM = RAM;
return this;
}
public Builder setStorage(String storage) {
this.storage = storage;
return this;
}
public Computer build() {
return new Computer(this);
}
}
}
사용 예:
Computer computer = new Computer.Builder()
.setCPU("Intel i9")
.setRAM("32GB")
.setStorage("1TB SSD")
.build();
Kotlin에서의 대안적 방법들
Kotlin은 다양한 언어 기능을 통해 객체 생성을 더 간결하고 직관적으로 할 수 있습니다.
1. Named Arguments와 Default Arguments
Kotlin에서는 named arguments와 default arguments를 통해 객체 생성시 필요한 인자만 전달하고, 나머지 인자에는 기본값을 사용할 수 있습니다.
data class Computer(
val CPU: String = "Default CPU",
val RAM: String = "Default RAM",
val storage: String = "Default Storage"
)
val computer = Computer(CPU = "Intel i9", RAM = "32GB")
2. Apply
Kotlin에서 apply
함수를 사용하여 객체 생성 후 초기화 과정을 좀 더 읽기 좋게 만들 수 있습니다.
data class Computer(var CPU: String? = null, var RAM: String? = null, var storage: String? = null)
val computer = Computer().apply {
CPU = "Intel i9"
RAM = "32GB"
storage = "1TB SSD"
}
결론
Java에서는 Builder 패턴을 사용하여 복잡한 객체의 생성 과정을 명확하게 표현할 수 있습니다.
반면, Kotlin에서는 named arguments, default arguments, apply와 같은 언어 기능을 활용하여 객체 생성과 초기화 과정을 더욱 간결하게 표현할 수 있습니다.
Kotlin의 이러한 기능들은 코드의 가독성을 높이며, 객체 생성과정을 더 직관적으로 만들어 줍니다.
'Language > Kotlin' 카테고리의 다른 글
리플렉션(Reflection) in Kotlin & Spring (0) | 2023.08.24 |
---|---|
클래스 리터럴이란? (0) | 2023.08.24 |
Kotlin의 `filter`와 `map` 함수 (0) | 2023.08.24 |
Kotlin에서 람다의 라벨링 (0) | 2023.08.23 |
Kotlin의 코드 간결성 (Lombok과 유사한 기능들 비교) (0) | 2023.08.17 |