CS | 팩토리 메소드 패턴

happy tiger·2022년 10월 10일
0

CS

목록 보기
4/10
post-thumbnail

팩토리 메소드 패턴이란?

팩토리 패턴(factory method pattern): 객체를 사용하는 코드에서 객체 생성 부분을 떼어내 추상화(사용자로부터 프로세스 또는 메서드의 내부 구현을 숨김)한 패턴이자 상속 관계에 있는 두 클래스에서 상위 클래스중요한 뼈대를 결정하고, 하위 클래스에서 객체 생성에 관한 구체적인 내용을 결정하는 패턴이다.

factory method pattern에서의 'factory'는 '공장'이라는 뜻으로, object를 찍어낼 수 있는 공장을 의미한다. factory는 함수로 나타낼수도 있고 클래스 로 나타낼수도 있다.

class Animal():
	def speak(self):
    		pass

class Cat(Animal):
	def speak(self):
    		print("meow")

class Dog(Animal):
	def speak(self):
    		print("bark")

# 함수로 나타내는 팩토리
# 실제 코드를 짤 때는 enum을 사용하자
def FactoryFn(animal:str) -> Animal:
	if animal == "Cat":
    	return Cat()
	if animal == "Dog":
    	return Dog()

cat = FactoryFn("Cat")
cat.speak()    # meow
dog = FactoryFn("Dog")
dog.speak()    # bark

# 클래스로 나타내는 팩토리
class AnimalFactory():
	# enum 추천
	def createAnimal(self, animal:str) -> Animal:
    	if animal == "Cat":
        	return Cat()
		elif animal == "Dog":
        	return Dog()

factory = AnimalFactory()
cat = factory.createAnimal("Cat")
dog = factory.createAnimal("Dog")

cat.speak()    # meow
dog.speak()    # bark

팩토리 메소드 패턴의 장점

  • 상위 클래스와 하위 클래스가 분리되기 때문에 느슨한 결합을 가지며, 상위 클래스에서는 인스턴스 생성 방식에 대해 전혀 알 필요가 없기 때문에 더 많은 유연성을 가진다.
  • 객체 생성 로직이 따로 떼어져 있기 때문에 코드를 리팩터링하더라도 한 곳만 고칠 수 있게 되니 유지 보수성이 증가한다.
profile
호기심·끈기·성장·발전·행복·협력 ٩(๑•̀ㅂ•́)و

0개의 댓글