PPP CLUB Animation 객체 이런식으로 만들어 보기
========================================================================
아래 코드와 같이 원과 직사각형 클래스가 있고 이걸 그리는 함수가 각각 있다고 해봅시다. 혹시 불편한 부분이 느껴지시나요?
class Circle {
func draw() {
print("draw circle")
}
}
class Rectangle {
func draw() {
print("draw rectangle")
}
}
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let circle = Circle()
circle.draw()
let rectangle = Rectangle()
rectangle.draw()
}
}
저는 크게 세가지 불편한 부분이 느껴집니다
이것을 해결할 수 잇는 디자인 패턴이 바로 팩토리 패턴입니다!
어떤 객체를 생성할 때, 그 객체를 사용하는 객체에서 직접 객체의 인스턴스를 생성하는 것이 아니라, 팩토리라는 객체에게 그 작업을 맡겨 의존성을 주입받는 방법
쉽게 말해
⇒ 객체 생성을 전담하는 struct/class를 만들어 구체적인 생성과정을 그 안에서 구현하는 패턴
가장 큰 장점은 객체 생성 로직이 Factory 클래스에 집중됨으로 해당 객체가 집중해야될 부분에 초점을 맞출 수 있다는 것이다.