[JAVA] 팩토리 패턴

HEETAE HEO·2022년 5월 31일
0
post-thumbnail

팩토리 패턴은 생성 패턴(Creational Pattern)중 하나입니다.

생선 패턴이란?

생성 패턴은 인스턴스를 만드는 절차를 추상화하는 패턴입니다. 생성 패턴에 속하는 패턴들은 객체를 생성, 합성 하는 방법이나 객체의 표현 방법을 시스템과 분리해줍니다.

생성 패턴은 시스템이 상속보다 복합 방법을 사용하는 방향으로 진화되어 가면서 더 중요해지고 있습니다.

팩토리 패턴이란?

팩토리 패턴은 객체를 생성하는 인터페이스는 미리 정의하되, 인스턴스를 만들 클래스의 결정은 서브 클래스 쪽에서 내리는 패턴입니다. 다시 말해 여러 개의 서브 클래스를 가진 슈퍼 클래스가 있을 때 인풋에 따라 하나의 자식 클래스의 인스턴스 가진 슈퍼클래스가 하나의 자식 클래스의 인스턴스를 리턴해주는 방식입니다.

팩토리 패턴의 사용 유무의 차이

팩토리 패턴을 사용하지 않는 경우

public void Bark(){
	public void Use(){
    	system.out.println("짖습니다.");
    }
}

public class Dog{
	private Bark bark;
    
    public Dog(){
    	this.bark = new Bark();
    }
    
    public void DogBark(){
    	bark.Use();
    }
}

이런 식으로 생성자를 통해 특정 객체를 직접 생성을 합니다.

반면 팩토리 패턴을 사용하게 된다면

public class Bark{
	public static Bark getInstance(){
    	return new Bark();
    }
}

public class Dog(){
	private Bark bark;
    Bark factory = new Bark();
    
    public Dog(){
    	this.bark = factory.getInstance();
    }
    
    public void DogBark(){
    	bark.Use();
    }
}
        

Bark 클래스에서는 getInstance()메서드를 통해 인스턴스를 반환합니다. 그러면 Dog 클래스들 내부에서 Bark 객체를 직접 생성하지 않습니다.
Bark 클래스에 인스턴스를 요청하고 생성된 인스턴스를 반환 받으면 됩니다.

Bark 생성자가 수저오디게 된다면 Bark 클래스에 있는 getInstance() 메서드 내부에 있는 Bark 생성자만 변경 시켜주면 됩니다.

profile
Android 개발 잘하고 싶어요!!!

0개의 댓글