1. 싱글톤 패턴이란?
static처럼 main 시작 전에 객체를 단 한번만 메모리 (heap)에 띄울 수 있는 패턴 (= 하나의 인스턴스를 공유하여 사용할 수 있음!) (= heap은 원래 동적이라 내가 원할 때, 여러번 띄울 수 있는데 그걸 static처럼 사용) 클래스의 인스턴스를 단 하나만 생성하고, 어디서든 동일한 인스턴스에 접근할 수 있도록 하는 것
static이 용량을 많이 차지해서 싱글톤 패턴을 사용한다.
2. 싱글톤 패턴 구조
1. 생성자를 private으로 선언 > 외부에서의 인스턴스 생성을 막는다. 2. 클래스 내부에 정적(static) 메서드를 제공하여 유일한 인스턴스에 접근할 수 있게 한다. 3. 인스턴스가 생성되지 않았을 경우에는 인스턴스를 생성하고, 이미 생성되어 있는 경우에는 기존 인스턴스를 반환하는 방식으로 구현
3. 싱글톤 예시
3-1. 원래 사용법
싱글톤을 사용하면 new를 한 번만 써서 코딩 할 수 있다.
당연하게 두 객체의 HASH값이 다른걸 확인! (다른 주소를 참조하고 있으니까
3-2. 싱글톤 사용
main 메소드를 보면 new를 쓰지않고 객체를 만든 것을 확인! p1과 p2는 동일함! 원래 ) President p1 = new President(); 싱글톤 ) President p1 = President.instance; >> instance 변수를 통해서 6번 라인에 접근
Hash 값이 같다!! 즉, 완벽하게 같은 걸 가리키고 있다는 말임!
4. Instance()메소드 / getInstance()메소드
싱글톤 디자인 패턴을 구현하는 메서드다
getInstance() 메서드는 싱글톤에서 유일하게 외부에서 객체를 얻는 방법 중 하나이다. 일반적으로 싱글톤 클래스의 생성자는 private으로 선언되어 외부에서 직접 객체를 생성할 수 없도록 한다. 따라서 getInstance() 메서드를 통해 싱글톤 객체를 얻을 수 있다. 이 메서드는 이미 생성된 싱글톤 객체가 있을 경우 해당 객체를 반환하고, 없을 경우에만 새로운 객체를 생성하여 반환한다. 이를 통해 애플리케이션 전체에서 하나의 공유 인스턴스를 유지할 수 있다.
5. 싱글톤을 사용하는 이유
1. 싱글톤을 사용하면 리소스를 단 하나의 인스턴스로 관리하여 충돌이나 부작용을 방지할 수 있다. 2. 메모리 절약이 가능하다 등
싱글톤은 해쉬값이 같지만 독립적이다.
a의 참조값을 바꾼다고 해서 레퍼런스 타입처럼 같이 값이 바뀌지 않는다는 말.
Share article