Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- telegraf
- c3 step graph
- gcc regex
- selinux port 등록
- g++ 업데이트
- 정규식 활용
- gcc 업데이트
- c3 축 가리기
- influxdb 설치
- c3 초
- 정규식 컴파일
- 1697
- c++ 정규식
- linux시간으로 변경
- 백준
- snmp
- InfluxDB
- CentOS7
- c3 second
- grafana dashboard
- c3 축 없애기
- python popen
- regex_search
- python os
- semanage
- centos pyhon 설치
- subporcess path
- python subprocess
- 정규식 문자열 출력
- snmp test
Archives
- Today
- Total
리셋 되지 말자
싱글톤 패턴(Singleton Pattern) 본문
싱글톤 패턴
싱글톤 패턴은 인스턴스를 하나만 만들어 사용하기 위한 패턴이다.
오직 하나의 인스터스만을 만들고 그것을 계속 재사용한다.
싱클톤 패턴을 적용할 경우 의미상 두 개 이상의 객체를 가질 수 없으므로 아래의 세 가지가 필요하다.
- new를 실행할 수 없도록 생성자에 private 접근 제어자를 지정
- 유일한 단일 객체를 반활할 수 있는 정적 메서드가 필요
- 유일한 단일 객체를 참조할 정ㅈ거 참조 변수가 필요
예제 코드
- Singleton.java
package singletonPattern;
public class Singleton {
static Singleton singletonObject; //정적 참조 변수
private Singleton() {}; //private 생성자
// 객체 반환 정적 메서드
public static Singleton getInstance() {
if(singletonObject == null) {
singletonObject = new Singleton();
}
return singletonObject;
}
}
- Client.java
package singletonPattern;
public class Client {
public static void main(String[] args) {
// private 생성자이므로 new를 통해 인스턴스를 생성할 수 없다.
// Singleton s = new Singleton();
Singleton s1 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
Singleton s3 = Singleton.getInstance();
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
s1 = null;
s2 = null;
s3 = null;
}
}
- 결과
- T메모리
객체 참조 변수들인 singletonObject, s1, s2, s3 모두 하나의 단일 객체를 참조하는 것을 확인할 수 있다.
- 결과
System.out.println을 통해 출력하면 참조하고 있는 객체의 toString() 메서드가 호출된다. toString() 메서드를 별도로 오버라이딩하지 않았다면 객체의 고유 값이 hashcode 를 반환하게 되는데, 호출할 때 같은 값이 출력되는 것으로 모든 참조 변수가 동일한 객체를 참조한다는 것을 의미한다.
싱글톤 패턴의 특징
- private 생성자를 갖는다.
- 단일 객체 참조 변수를 정적 속성으로 갖는다.
- 단일 객체 참조 변수가 참조하는 단일 객체를 반환하는 getInstance()정적 메서드를 갖는다.
- 단일 객체는 쓰기 가능한 속성을 갖지 않는 것이 정석이다.
'Java(폐지) > 디자인 패턴' 카테고리의 다른 글
팩토리 메서드 패턴(Factory Method Pattern) (0) | 2020.08.05 |
---|---|
템플릿 메서드 패턴(Template Method Pattern) (0) | 2020.08.04 |
데코레이터 패턴(Decorator Pattern) (0) | 2020.08.04 |
프록시 패턴(Proxy Pattern) (0) | 2020.08.04 |
어댑터 패턴(Adapter Pattern) (0) | 2020.07.21 |
Comments