Factory 패턴은 객체 생성을 캡슐화하는 디자인 패턴입니다. 이 패턴은 객체 생성 로직을 클라이언트 코드에서 분리하여, 요청에 따라 다양한 객체를 생성할 수 있게 합니다. Factory 패턴은 주로 다음과 같은 상황에서 사용됩니다:
- 생성할 객체의 타입이 런타임에 결정되는 경우
- 객체 생성과 관련된 로직을 한 곳에서 관리하고 싶은 경우
- 객체 생성에 필요한 데이터가 복잡한 경우
코틀린에서 Factory 패턴을 구현하는 예제를 들어보겠습니다.
먼저, 생성할 객체의 공통 인터페이스를 정의합니다.
interface Animal { fun speak() }
다음으로, 인터페이스를 구현하는 여러 클래스를 정의합니다.
class Dog : Animal {
override fun speak() {
println("Woof! Woof!")
}
}
class Cat : Animal {
override fun speak() {
println("Meow! Meow!")
}
}
이제 Factory 클래스를 정의합니다. 이 클래스는 객체 생성 로직을 캡슐화하며, 클라이언트 코드에 의해 호출됩니다.
class AnimalFactory {
fun createAnimal(type: String): Animal? {
return when (type.toLowerCase()) {
"dog" -> Dog()
"cat" -> Cat()
else -> null
}
}
}
마지막으로 클라이언트 코드에서 Factory 클래스를 사용하여 객체를 생성합니다.
fun main() {
val animalFactory = AnimalFactory()
val dog = animalFactory.createAnimal("dog")
dog?.speak()
val cat = animalFactory.createAnimal("cat")
cat?.speak()
}
위 예제에서 AnimalFactory 클래스는 createAnimal 함수를 통해 요청된 동물 타입에 따라 Dog 또는 Cat 객체를 생성합니다. 클라이언트 코드는 이 Factory 클래스를 사용하여 필요한 객체를 쉽게 생성할 수 있습니다. 이렇게 함으로써 객체 생성 로직이 클라이언트 코드와 분리되어 유지보수와 확장성이 향상됩니다.
'개발 > 디자인패턴' 카테고리의 다른 글
[Design Pattern] View Model of MVVM (1) | 2023.07.27 |
---|---|
[Design Pattern] Builder 패턴 (6) | 2023.05.25 |
[Design Pattern] Adapter 패턴 (0) | 2023.05.25 |
[Design Pattern] MVVM 아키텍처 패턴 (1) | 2023.05.22 |