Java Design Pattern - Singleton Pattern

업데이트:

Design Pattern

  • 과거의 소프트웨어 개발 과정에서 발견된 설계의 노하우를 축적하여 이름을 붙여, 이후에 재이용하기 좋은 형태로 특정의 규약을 묶어서 정리한 것이다.
  • 디자인 패턴은 알고리즘이 아니라 상황에 따라 자주 쓰이는 설계 방법을 정리한 코딩 방법론일 뿐이며 모든 상황의 해결책이 아니다.

Creational Patterns, 생성 패턴

  • 객체가 생성되는 방식을 중시하는 패턴이다.
  • 객체의 생성과 조합을 캡슐화하여 객체가 생성 혹은 수정되어도 전체 프로그램 구조에 영향을 받지 않도록 유연성을 제공한다.

Singleton Pattern

  • 전역 변수를 사용하지 않고 객체를 하나만 생성도록 하며, 생성된 객체를 어디에서든지 참조할 수 있도록 하는 패턴이다.

Example

public class SingleObject {

  // Create an object of SingleObject.
  private static SingleObject instance = new SingleObject();

  // Make the constructor private so that this class cannot be instantiated.
  private SingleObject() {
  }

  // Get the only object available.
  public static SingleObject getInstance() {
    return instance;
  }

  public void showMessage() {
    System.out.println("Hello World!");
  }

}
  • private 생성자만 구현함으로써, 외부에서 해당 객체를 생성하지 못하도록 하였다.
  • 하나의 객체를 생성하여 getter method를 제공함으로써, 해당 객체를 다른 객체에서 참조 가능하도록 하였다.
public class SingletonPatternMain {

  public static void main(String[] args) {
    // Illegal construct.
    // Compile Time Error: The constructor SingleObject() is not visible.
    // SingleObject object = new SingleObject();
    // Get the only object available.
    SingleObject object = SingleObject.getInstance();
    // Show the message.
    object.showMessage();
  }

}
  • Singleton 객체를 생성자를 통해 생성하고자 하면, Compile 단계에서 오류가 발생한다.
  • Singleton 객체의 getter 메서드를 이용하여 내부 메서드(기능)를 사용하면 정상적으로 수행이 된다.

Source

Sample Code는 여기에서 확인 가능합니다.

댓글남기기