-
[패턴] 정적 팩토리(Factory) 패턴카테고리 없음 2024. 4. 8. 16:38
사용 이유
- 의미있는 이름를 부여할 수 있다. (가독성 좋은 코드)
- 인터페이스를 사용한다면 하위 타입을 반환할 수 있다.
- 싱글톤과 연계하여 사용할 수 있다.
- 객체 생성을 캡슐화 할 수 있다.
네이밍
- from - 하나의 인자를 받아서 객체 생성
- of - 여러 인자를 받아서 객체 생성
- getInstance - 싱글톤
- newInstance - 새로운 인스턴스 생성
간단한 사용법
class Person private constructor( val name: String, val order: Int ) { companion object { fun of(name: String, order: Int): Person = Person(name, order) } } fun main() { val person = Person("홍길동", 30) // 불가 val person = Person.of("홍길동", 30) // 가능 println("${person.name} ${person.age}") }