1. 싱글톤 패턴 (Singleton)
오직 하나의 객체만 생성하여 상태를 공유하는 싱글톤 패턴을 알아봅니다.
싱글톤 패턴은 어플리케이션 전체에서 단 하나의 인스턴스(객체)만 생성되도록 보장하고, 어디서든 그 인스턴스에 접근할 수 있게 하는 패턴이에요. 주로 설정 파일 관리자나 데이터베이스 연결 객체처럼 여러 개가 만들어지면 안 되는 경우에 사용해요.
하리(Hari)에서는 우리 키워드(정적 멤버)를 활용하여 싱글톤을 아주 쉽게 구현할 수 있답니다.
1. 데이터베이스 관리자 만들기
_인스턴스 변수를 외부에 숨기고(우리'의 '_인스턴스'를 비어있음으로 정하여 숨기자), 오직 정적 메서드를 통해서만 접근할 수 있도록 방어해 볼까요?
[데이터베이스]를 설계하자:
'우리'의 '_인스턴스'를 비어있음으로 정하여 숨기자
'데이터'를 [문자열]인 "연결됨!"으로 정하자
(참고: 외부에서는 이 정적 함수로만 객체를 가져갈 수 있어요)
[데이터베이스]를 돌려주는 '우리'의 <가져오기>를 만들자 ():
만약 ('우리'의 '_인스턴스'가 비어있음과 같다) 라면:
'우리'의 '_인스턴스'를 [데이터베이스]인 새로운 [데이터베이스]()로 정하자
'우리'의 '_인스턴스'를 돌려주자
(참고: 두 번 가져와도 결국 똑같은 객체랍니다!)
'디비1'을 [데이터베이스]인 [데이터베이스]의 <가져오기>()로 정하자
'디비2'을 [데이터베이스]인 [데이터베이스]의 <가져오기>()로 정하자
'디비1'의 '데이터'를 "업데이트됨!"으로 정하자
(참고: 디비1을 바꿨는데 디비2도 바뀌어 있을까요?)
틀"디비2의 상태: {'디비2'의 '데이터'}"를 출력하자