[JAVA] 프로토타입 패턴&싱글톤 패턴(new, getInstance()의 차이)

728x90

 

안녕하세요. 오늘은 자바에서 객체를 생성하는 2가지 방법, 프로토타입 방식과 싱글톤 방식에 대해 알아보도록 하겠습니다.

 

 

프로토타입 패턴(Prototype Pattern)

⭐ 매번 새로운 객체 인스턴스를 생성하는 방식입니다.

 

⭐ 각 객체 인스턴스는 서로 독립적이며 각각의 인스턴스는 별도의 상태를 가질 수 있습니다.

 

⭐ 프로토타입 패턴을 사용하면 객체를 반복해서 생성할 때 유용하여 객체 인스턴스 간의 상태 공유가 필요하지 않은 경우에 적합합니다.

 

⭐ 'new' 키워드를 사용하여 객체를 생성하며 생성자를 호출하는 방식으로 객체를 초기화하며, 객체 생성 및 초기화가 단순하고 빠른 경우 'new' 키워드로 객체를 생성하는 것이 효율적입니다.

// Prototype Pattern Example
Rectangle rec1 = new Rectangle(3, 5);
Rectangle rec2 = new Rectangle(10, 20);

 

서로 다른 크기의 두 개의 사각형 객체를 생성한 코드인데요, 위에서 설명드린 것처럼 서로 다른 상태를 가져야할 때 사용됩니다.

 

 

 

 

 

싱글톤 패턴(Singleton Pattern)

⭐ 객체의 인스턴스를 한 개만 생성되게 하는 방식입니다.

 

⭐ 한 번 생성된 인스턴스를 여러 곳에서 공유하기 때문에 객체의 상태가 모든 사용자에게 동일합니다.

 

⭐ 주로 공통된 리소스를 관리하거나 설정 데이터와 같은 정보를 중앙에서 관리해야 할 때 사용됩니다.

 

⭐ 'getInstance()' 메서드를 사용하여 싱글톤 인스턴스를 반환하며, 객체 생성 및 초기화에 복잡한 로직이 필요하거나 초기화가 한 번만 이루어져야 하는 경우 'getInstance()' 메서드를 사용하여 초기화 로직을 관리합니다.

// Singleton Pattern Example
public class Singleton {
    private static Singleton instance;
    
    private Singleton() {
    	// private constructor
        // private 접근제한자를 주어 외부에서 직접 객체를 생성할 수 없게 막음!
    }
    
    public static Singleton getInstance() {
    	if(instance == null) {
    	    instance = new Singleton();
        }
    }
    
    return instance;
}
Singleton obj1 = Singleton.getInstance(); // 싱글톤 인스턴스를 얻음
Singleton obj2 = Singleton.getInstance(); // 동일한 싱글톤 인스턴스를 다시 얻음

 

 

 

 

 

프로토타입 방식과 싱글톤 방식 차이점에 대해 요약하자면! 프로토타입 방식은 매번 새로운 객체를 생성하고 각 객체를 독립적으로 다루는 데 사용되며, 싱글톤 방식은 단일 인스턴스를 관리하고 공유하는 데 사용됩니다. 😊

 

 

 

728x90