팩토리 패턴(factory pattern)은 객체를 사용하는 코드에서 객체 생성 부분을 떼어내 추상화한 패턴이자, 상속 관계에 있는 두 클래스에서 상위 클래스가 중요한 뼈대를 결정하고, 하위 클래스에서 객체 생성에 관한 구체적인 내용을 결정하는 패턴입니다.

상위 클래스와 하위 클래스가 분리되기 때문에 느슨한 결합을 가지며 상위 클래스에서는 인스턴스 생성 방식에 대해 전혀 알 필요가 없기 때문에 더 많은 유연성을 갖게 됩니다.

그리고 객체 생성 로직이 따로 떼어져 있기 때문에 코드를 리팩토링하더라도 한 곳만 고칠 수 있게 되니 유지 보수성이 증가됩니다.

팩토리 패턴 실제로 구현해보기

Untitled

정적 메서드

정적 메서드를 쓰면 클래스의 인스터느 없이 호출이 가능하여 메모리를 절약할 수 있고, 개별 인스턴스에 묶이지 않으며 클래스 내의 함수를 정의할 수 있는 장점이 있다.

class Lette {
		constructor() {
				this.name = "latte"
				this.price = 3300
		}
}

class Expresso {
		constructor() {
				this.name = "Expresso"
				this.
		}
}

// 하위 클래스 : 구체적 내용 
class LetteFactory {
		static createCoffee() {
				return new Latte()
		}
}

// 하위 클래스 : 구체적 내용 
class EspressoFactory {
		static createCoffee() {
				return new Espresso()
		}
}

const factoryList = { LatteFactory, ExpressoFactory }

// 상위 클래스 (중요한 뼈대) 
// : 하위 클래스 호출만. 어떤 메소드가 있는지는 알지만 어떤 로직을 수행하는지는 모른다.
class CoffeeFactory {
		static createCoffee(type) {
				const factory = factoryList[type]
				return factory.createCoffee()
		}
}

const main = () => {
		// 라떼 커피를 주문한다.
		const coffee = CoffeeFactory.createCoffee("LatteFactory")
		// 커피 이름을 부른다.
		console.log(coffe.name) // latte
}
main()