지난 글: [프로그래밍 언어/JAVA] - JAVA 입문 - 변수 유효 범위
싱글톤 패턴
싱글톤 패턴이란 객체 지향 프로그램에서 인스턴스를 단 하나만 생성하는 디자인 패턴을 뜻한다.
디자인 패턴이란 프로그램 특성에 따른 설계 유형을 이론화 한 내용이며 객체 지향 프로그램을 더 유연하고
재활용성이 높은 프로그램을 만들 수 있게 정리한 내용을 말한다.
이번 글에서 배워볼 싱글톤 패턴은 static을 응용하여 프로그램 전반에서 사용하는 인스턴스를
하나만 구현하는 방식이다.
실무나 여러 프레임워크에서 많이 사용하는 패턴이라니 잘 익혀두자.
어떤 회사의 직원들을 객체 지향 프로그램으로 구현한다고 가정하면 직원은 여러명, 회사는 하나이다.
이런 경우에는 회사 객체를 하나만 생성해야한다.
다음과 같이 싱글톤 패턴으로 Company 클래스를 생성해보자.
싱글톤 패턴으로 회사 클래스 구현하기

1) 우선 생성자를 private으로 만들어 디폴트 생성자를 만들지 않게 한다.
이러면 접근 제어자가 private이므로 외부 클래스에서 마음대로 Company 인스턴스를 생성할 수 없다.
Company 클래스 내부에서만 이 클래스의 생성을 제어할 수 있다.
2) 위에서 외부 인스턴스를 생성할 수 없도록 만들었으니 이제 우리가 프로그램에서 사용할
하나의 인스턴스를 만들자. Company 클래스 내부에 static을 사용해 프로그램 전체에서 사용할
유일한 인스턴스를 생성하고 private으로 선언하여 외부에서 이 인스턴스에 접근하지 못하도록 제한한다.
3) 이제 private으로 선언한 유일한 인스턴스를 외부에서도 사용할 수 있도록 설정하자.
이를 위해 public 메서드를 생성한다. 그리고 유일하게 생성한 인스턴스를 반환해준다.
이때 인스턴스를 반환하는 메서드는 반드시 static으로 선언해야 하는데,
이유는 getInstance( ) 메서드는 인스턴스 생성과 상관없이 호출할 수 있어야 하기 때문이다.
4) 외부 클래스에서는 Company 인스턴스를 생성할 수 없으니
static으로 제공되는 getInstance( ) 메서드를호출하여 실제로 사용하는 코드를 만들어 보자.
Company.getInstance( ); 와 같이 호출하면 반환 값으로 유일한 인스턴스를 받아온다.
밑 사진에서 유일한 인스턴스를 대입한 두 변수의 주소 값이 같은이 확인해보자.


myCompany1과 myCompany2를 비교해 보면 같은 참조 값을 갖는 동일한 인스턴스라는 것을 알 수 있다.
또 Company 클래스는 내부에 생성된 유일한 인스턴스 외에는 더 이상 인스턴스를 생성할 수 없다.
이처럼 static을 사용하여 유일한 객체를 생성하는 싱글톤 패턴을 구현할 수 있다.
참고 서적: 자바 프로그래밍 입문 - 박은종
'프로그래밍 언어 > JAVA' 카테고리의 다른 글
JAVA 입문 - 다차원 배열 (0) | 2022.05.16 |
---|---|
JAVA 입문 - 배열 (0) | 2022.05.15 |
JAVA 입문 - 변수 유효 범위 (0) | 2022.05.14 |
JAVA 입문 - static 변수 (0) | 2022.05.13 |
JAVA 입문 - 객체 간 협력 (0) | 2022.05.12 |