Java 객체지향 프로그래밍 - 싱글톤 패턴 (Singleton)
🧑‍💻 𝗣𝗿𝗼𝗴𝗿𝗮𝗺𝗺𝗶𝗻𝗴/Java

Java 객체지향 프로그래밍 - 싱글톤 패턴 (Singleton)

1. Java 객체지향 프로그래밍 - 상속 (Inheritance)
2. Java 객체지향 프로그래밍 - 메서드 오버라이딩 (Overriding)
3. Java 객체지향 프로그래밍 - 은닉화(Encapsulation) 와 접근 제한자 (modifier)
4. Java 객체지향 프로그래밍 - 싱글톤 패턴 (Singleton)
5. Java 객체지향 프로그래밍 - 다형성 (Polymorphism)

 

 

 싱글톤 패턴 (Singleton) 

개요

싱글톤 패턴이란 객체의 인스턴스가 딱 하나만 생성되는 패턴을 의미합니다.

즉 해당 객체는 딱 하나의 인스턴스만 가지고 쓸 수 있는 것입니다.

따라서, 생성자를 은닉화 하고 인스턴스를 get 할 수 있는 getInstance() 메서드를 만들어서 사용합니다.

 

 

사용하는 이유

만약 여러 개의 객체가 필요 없는 경우에서 사용될 수 있습니다.

예를 들어, 수정이 가능한 멤버 변수가 없어 객체를 구별할 필요가 없고 기능만 있는 경우에서 사용될 수 있습니다.

이러한 객체를 stateless 객체라고 합니다.

따라서 객체를 계속 생성/삭제 하는 데 별다른 비용이 필요 없게 됩니다.

즉슨, 싱글톤 디자인 패턴을 이용하게 되면 재사용성이 증가하게 되고 객체 생성에 따른 비용이 절감됩니다.

 

 

만드는 방법

1. private 기본 생성자 생성
2. private static 인스턴스 생성
3. public static getInstance() 메서드 생성

더 이상의 생성자를 만들 수 없게 하기 위해서 private 로 생성자를 생성해야 합니다.

private static instance 를 만드는 이유는 해당 클래스에서 딱 하나만 객체를 생성해서 밖으로 보내주기 때문입니다.

이때 외부에서 사용되기 위해서 getInstance() 메서드를 생성하는데

static 메서드 안에서는 매개변수를 받지 않는 이상 static 변수들만 사용할 수 있습니다.

따라서 private static instance 를 만들어 getInstance 에서 return 해주는 것입니다.

 

 

예제

package first.subject.m07.encapsulation.singleton;


public class MyNote {
	// 2. private static 한 인스턴스 생성 
	private static MyNote instance = new MyNote();


	// 1. private 한 기본 생성자 
	private MyNote() {}


	// 3. private static 한 getInstance() 메서드 생성 
	public static MyNote getInstance() {
		return instance;
	}

}
package first.subject.m07.encapsulation.singleton;


public class Test {
	public static void main(String[] args) {
		// MyNote note = new MyNote();

		// 싱글톤 패턴
		MyNote note1 = MyNote.getInstance();
		MyNote note2 = MyNote.getInstance();

		// 두 객체가 같은 것인지 확인
		if (note1 == note2) {
			System.out.println("Same");
		} else {
			System.out.println("Not Same");
		}

	}
}

 

 

 

 

 

 

 

 

# java singleton # 자바 싱글톤


 

 

728x90