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 |
Tags
- tiles.xml
- model1
- 배포
- 블록체인
- 웹소켓
- 알고리즘
- JavaScript
- CSS
- autowired
- express
- RDS
- JSP
- docker
- websocket
- jQuery
- Cookie
- SQL
- phaser
- PL/SQL
- Spring
- Ajax
- 비트코인
- 암호화
- HTML
- EC2
- node.js
- AWS
- 도커
- 웹게임
- Servlet
Archives
- Today
- Total
記錄
Singleton Pattern(싱글톤 패턴) 본문
Singleton Pattern(싱글톤 패턴)
특정 클래스의 객체가 오직 한 개만 존재하도록 보장하는 패턴이다.
public class SystemSpeaker {
static private SystemSpeaker instance;
// 외부에서 호출 안되고 하나만 있게 하기 위해서
// private이 있고 static이 있는 것
private int volume;
private SystemSpeaker() {
volume = 5;
};
public static SystemSpeaker getInstance() {
// 객체 생성 없이 getInstance를 사용하기 위해서
// 마찬가지로 static이 들어간다
if (instance == null) {
instance = new SystemSpeaker();
}
return instance;
}
public int getVolume() {
return volume;
}
public void setVolume(int volume) {
this.volume = volume;
}
} // class end
/*
* static은 인스턴스(객체)가 생성되기 이전에 별도의 메모리 공간에 할당되어
* 컴파일시에 이미 초기화까지 완료가 된다. 그래서 객체 생성 없이 호출이
* 가능한 것이다
*/
public class Main {
public static void main(String[] args) {
SystemSpeaker spk1 = SystemSpeaker.getInstance();
SystemSpeaker spk2 = SystemSpeaker.getInstance();
System.out.println(spk1.getVolume()); // 5
System.out.println(spk2.getVolume()); // 5
spk1.setVolume(10);
System.out.println(spk1.getVolume()); // 10
System.out.println(spk2.getVolume()); // 10 <-- 주목
spk2.setVolume(20);
System.out.println(spk1.getVolume()); // 20 <-- 주목
System.out.println(spk2.getVolume()); // 20
}
}
'IT_Fundamental > 디자인 패턴' 카테고리의 다른 글
Prototype Pattern(프로토 타입 패턴) - 2 (0) | 2017.12.07 |
---|---|
Prototype Pattern(프로토 타입 패턴) - 1 (0) | 2017.12.07 |
Factory Method Pattern(팩토리 메소드 패턴) (0) | 2017.11.19 |
Template Method Pattern(탬플릿 메소드 패턴) (0) | 2017.11.18 |
Adapter Pattern(어댑터 패턴) (0) | 2017.11.16 |
Comments