English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java 기본 튜토리얼

Java 흐름 제어

Java 배열

Java 오브젝트 지향(I)

Java 오브젝트 지향(II)

Java 오브젝트 지향(III)

Java 예외 처리

Java 목록(List)

Java Queue(큐)

Java Map 집합

Java Set 집합

Java 입력 출력(I/O)

Java Reader/Writer

Java 다른 주제

Java 싱글턴 패턴

이 튜토리얼에서는 예제를 통해 단일实例 디자인 패턴을 배우고 Java에서 이를 적용하는 방법을 배웁니다.

Singleton(단일实例)은 Java에서만 있는 기능이 아니라 디자인 패턴입니다. 이는 한 클래스의 인스턴스를 하나만 생성하도록 보장합니다.

디자인 패턴은 우리의 코드 라이브러리와 같으며, 전 세계 프로그래머들이 공유하는 다양한编码 기술을 포함하고 있습니다.

Java 싱글턴 패턴

아래는 Java에서 단일 예제를 사용하는 방법입니다.

  • 객체를 생성하는 것을 제한하는 프라이빗 생성자를 생성

  • 단일 예제 객체의 프라이빗 속성을 생성

  • public static 메서드를 생성하여 우리가 생성한 객체를 생성하고 접근할 수 있게 합니다. 메서드 내에서 우리가 여러 개의 객체를 생성하는 것을 제한하는 조건을 생성합니다.

이것은 예제입니다.

class SingletonExample {
    //객체의 프라이빗 필드에 참조
   private static SingletonExample singleObject;
   private SingletonExample() {
       //SingletonExample 클래스의 생성자
   }
   public static SingletonExample getInstance() {
        //단일 객체를 생성하는 코드를 작성
        //필요에 따라 객체에 접근
   }
}

위의 예제에서,

  • private static SingletonExample singleObject - 클래스 객체의 참조

  • private SingletonExample() - 외부에서 객체를 생성하는 것을 제한하는 프라이빗 생성자

  • public static SingletonExample getInstance() - 이 메서드는 해당 클래스의 독립적인 객체에 대한 참조를 반환합니다. 이 메서드가 정적이므로 클래스 이름을 사용하여 접근할 수 있습니다.

단일 예제 클래스를 사용

데이터베이스를 사용할 때 단일 예제를 사용할 수 있습니다. 이들은 데이터베이스에 접근하기 위한 커넥션 풀을 생성하고 모든 클라이언트에 동일한 커넥션을 재사용할 수 있습니다. 예를 들어,

class Database {
   private static Database dbObject;
   private Database() {      
   }
   public static Database getInstance() {
      //객체를 생성하십시오. (아직 생성되지 않았다면)
      if(dbObject == null) {
         dbObject = new Database();
      }
       //단일 객체를 반환
       return dbObject;
   }
   public void getConnection() {
       System.out.println("현재 데이터베이스에 연결되었습니다.");
   }
}
class Main {
   public static void main(String[] args) {
      Database db1;
      //데이터베이스의 독립적인 객체
      db1= Database.getInstance();
      
      db1.getConnection();
   }
}

프로그램을 실행할 때, 출력은 다음과 같습니다:

이제 데이터베이스에 연결되었습니다.

위의 예제에서

  • 단例 클래스 Database를 생성했습니다.

  • dbObject은 클래스 타입 필드입니다. 이는 Database 클래스의 객체를 참조합니다.

  • 프라이빗 생성자 Database()는 클래스 외부에서 객체를 생성하는 것을 방지합니다.

  • 스태틱 클래스 타입 메서드 getInstance()는 클래스의 인스턴스를 외부로 반환합니다.

  • Main 클래스에서, 우리는 db1. 우리는 db1getInstance() 호출하여 Database의 유일한 객체를 얻습니다.

  • getConnection() 메서드는 Database 객체만 사용할 수 있습니다.

  • Database는 하나의 객체만 있기 때문에 모든 클라이언트가 단일 연결을 통해 데이터베이스에 접근할 수 있습니다.

일부 상황(예: 로그)에서만 단例가 의미가 있으며, 데이터베이스 연결도 일반적으로 단例가 아니어야 합니다.

단例을 사용할지 여부를 결정하지 못하시면, 단例를 완전히 사용하지 않는 것을 권장합니다.