Cs ( Computer Science )/디자인 패턴

[CS] 디자인 패턴 - 팩토리 패턴

미노MINO 2023. 10. 27. 01:05
728x90

팩토리 패턴

팩토리 패턴은 객체를 사용하는 코드에서 객체 생성 부분을 떼어내 추상화한 패턴이자 상속 관계에 있는 두 클래스에서

상위 클래스가 중요한 뼈대를 결정하고, 하위 클래스에서 객체 생성에 관한 구체적인 내용을 결정하는 패턴

 

EX) 카페를 생각하자!

라떼 레시피와 아메리카노 레시피, 우유 레시피라는 구체적인 내용이 들어 있는 하위 클래스가 컨베이어 벨트를 통해 전달되고, 상위 클래스인 바리스타 공장에서 이 레시피를 토대로 우유 등을 생산하는 생산 공정!

 

 


용어

팩토리 메소드 패턴

  1. 생성 패턴 중 하나로, 객체를 생성할 때 어떤 클래스의 인스턴스를 만들 지 서브 클래스에서 결정하도록 한다.
    ( 조건에 따라 객체 생성을 팩토리 클래스로 위임하여, 팩토리 클래스에서 객체를 생성하는 패턴 )
    즉 인스턴스의 생성을 서브클래스에게 위임한다.
abstract class Phone {
	abstract void setting();
}

class GalaxyPhone extends Phone {
	public void setting() {
		System.out.println("GalaxyPhone setting");
	}
}

class Iphone extends Phone {
	public void setting() {
		System.out.println("iPhone setting");
	}
}

abstract class PhoneFactory {
	abstract Phone createPhone();
}

class GalaxyFactory extends PhoneFactory {
	@Override
	public Phone createPhone() {
		return new GalaxyPhone();
	}
}

class IphoneFactory extends PhoneFactory {
	@Override
	public Phone createPhone() {
		return new Iphone();
	}
}

팩토리 메서드 패턴을 구현해 봤는데 잘 했는지 잘 모르겠다.

Phone ( 추상 클래스 )
- GalaxyPhone
- IPhone

PhoneFactory ( 추상 클래스 )
- GalaxyFactory
- IphoneFactory

Interface도 추상 클래스 이므로
abstract 대신에 Interface로도 대체가 가능하다.

 

 

추상 팩토리 패턴

  1. 서로 관련이 있는 객체들을 통쨰로 묶어서 팩토리 클래스로 만들고, 이들 팩토리를 조건에 따라 생성하도록 다시 팩토리를 만들어서 객체를 생성하는 패턴

팩토리 패턴은 수정에는 닫혀 있고 확장에는 열려있는 패턴이다.

이 원칙은 소프트웨어 디자인의 개방/폐쇄 원칙(Open/Closed Principle, OCP) 중 하나이다.

 

참고

https://github.com/da-in/tech-interview-study/blob/main/CS%20Deep%20Dive/Design%20Pattern/Factory%20Method%20Pattern.md