팩토리 패턴은 SOLID 원칙을 지키기 위해 느슨한 결합을 위한 OOP 디자인 패턴이다.
코드 내에서 new 키워드를 사용했다는 의미는 인터페이스가 아닌 구상 클래스를 의존한다는 의미이다. (SOLID 위반)
별도의 클래스에서 클래스를 인스턴스화 할 수 있는데 이를 팩토리 클래스 라고 한다. 팩토리 클래스로 인해 다른 클래스에서 new 키워드를 제거할 수 있다.
기존에 Car
라는 추상 클래스가 있고 포드
, 도요타
라는 구현 클래스가 있다고 가정하자
그렇다면 팩토리 패턴을 이용해 CarFactory 팩토리 클래스를 만들어 사용할 수 있다.
public static void main(String[] args){
Car 포드 = CarFactory.getCar("포드");
}
하지만 요구사항으로 가솔린 차, 전기 차를 구분해달라고 왔을 때 추상 팩토리 패턴으로 팩토리 클래스 또한 추상화 할 수 있다.
public static void main(String[] args){
AbstractFactory pertrolFactory = FactoryProducer.getFactory("Pertrol");
Car petrolPord = pertolFactory.getCar("Pord");
}
AbstractFactory
는 가솔린차 공장과 전기차 공장을 추상화하고 FactoryProducer
에 의해 생성된다.