728x90
1. 싱글톤 패턴이란?
- 프로그램에서 인스턴스가 단 한 개만 생성되어야 하는 경우 사용하는 디자인 패턴
- static 변수, 메서드를 활용하여 구현할 수 있음
ex) 날짜 시간(시/분/초), 회사(삼성전자)
아래 클래스 다이어그램을 보면 위에서 부터
클래스 이름(Singleton)
변수(instance)
생성자와 메서드(Singleton, getInstance)
(-는 private, +는 public을 의미)
2. 싱글톤 패턴 예제
package ch18; public class Company { private static Company instance = new Company(); // 유일한 객체(인스턴스) 생성 private Company() {} // 여러 개의 객체를 생성하지 못하도록 private으로 설정 public static Company getInstance() { // 외부에서 클래스이름으로 메서드를 호출 할 때, static으로 선언해주어야 한다. if(instance == null) { instance = new Company(); } return instance; } } |
> 위의 다이어그램에서 보는바와 같이 Company라는 클래스에서 private static 변수로 멤버 변수를 선언하고
private으로 Company 생성자를 만들고, public으로 getInstance 메서드를 만드는 것이 일반적인 싱글톤 패턴이다.
저렇게 코딩을 하면 Client 코드에서 생성자를 의미로 생성할 수 없다. 오로지 하나의 인스턴스만 바라보게 된다.
package ch18; import java.util.Calendar; public class CompanyTest { public static void main(String[] args) { Company company1 = Company.getInstance(); Company company2 = Company.getInstance(); System.out.println(company1); System.out.println(company2); Calendar calendar = Calendar.getInstance(); } } |
=======
출력결과
=======
: 주소가 동일하다. (같은 인스턴스임)
ch18.Company@1c4af82c
ch18.Company@1c4af82c
728x90
'개발공부 > Java' 카테고리의 다른 글
[Java] 12. 자료를 순차적으로 관리하는 방법 - 배열(Array) (0) | 2021.11.29 |
---|---|
[Java] 11. static과 싱글톤 패턴 예제 (0) | 2021.11.28 |
[Java] 09. Static 변수와 Static 메서드에 대하여...(2) (0) | 2021.11.26 |
[Java] 09. Static 변수와 Static 메서드에 대하여...(1) (0) | 2021.11.24 |
[Java] 08. 객체협력 프로그래밍 예제 (0) | 2021.11.24 |