스태틱 팩토리 (Static Factory)

2013. 1. 15. 09:36Programming/JAVA

생성자를 사용하는 것 대신 Static Factory Method를 고려하자.

Static Factory Method란?

클래스의 인스턴스를 static public 매서드를 이용하여 리턴하는 방법. 

글로는 어렵게 설명 되어 있으나 코드를 보면 아주 단순하다.

public class Test{

public Test(){

...

}

위의 예시는 일반적인 생성자 함수 방식이고, 아래의 방식이 static Factory Method를 활용한 방식이다.

public class Test{

private static final Test INSTANCE = new Test();

private test(){

}

public static Test getInstance(){

return INSTANCE;

}

그렇다면 Static Factory Method를 이용한 방식엔 어떤 장점이 있을까?

첫 번째로, 일반 생성자처럼 클래스 이름을 부여하는게 아닌 함수 기능에 맞는 이름을 부여할 수 있다. 위의 코드를 예로 들어보면 Test라는 생성자 함수가 과연 어떤 역할을 할지 사용자로써는 모호하기만 하다. 하지만 함수에 getInstance라는 이름을 부여하면,

'아~ 이 함수는 Instance를 가져올 수 있구나!'

하며 보다 명확한 코드 사용을 할 수 있다는 장점이 있다.

두 번째는, 일반 생성자와 달리 생성할 때마다 객체를 새롭게 만들지 않는다. 각각의 객체가 필요할 경우엔 해당하지 않지만, 해당 객체를 싱글톤으로 개발해야 한다는 경우 등에는 Static Factory Method를 사용하면 보다 유용하다.

마지막으로 아래와 같이 공통 Interface를 하나의 static Factory Method에 담아서 제공한다면 좋은 코딩을 기대할 수 있다.


Interface를 이용한 코드 설계 습관이 나중 코드 확장성을 위해서도 중요하다.