일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 자바
- 스트림
- GC
- MSA
- jvm
- K8s
- 백준
- list
- 이스티오
- Stream
- gradle
- 자바 ORM 표준 JPA 프로그래밍
- SpringBoot
- Collection
- 토비의 스프링
- mysql
- 스프링
- Kotlin
- 쿠버네티스
- 보조스트림
- Real MySQL
- IntellJ
- spring
- redis
- thread
- JPA
- 토비의 스프링 정리
- Stack
- OS
- Java
Archives
- Today
- Total
인생을 코딩하다.
[Java] 디자인패턴(DesignPattern) -> 싱글톤 패턴(singleton Pattern)(1) 본문
728x90
반응형
static 관련해서 응용할 수 있는 singleton pattern은 디자인 패턴의 일종이다.
디자인 패턴... 우리가 시스템을 만들때, 객체 지향 프로그램으로 설계할 때, 어떻게 하면 효율적이고 유지보수 하기 좋게 만들 수 있는가를 일종의 패턴으로 만들어 놓은 23가지 패턴
그 중 싱글톤 패턴이란? (아주 기본적인 틀만 설명)
회사가믄 프로그램에서 많이 쓰는데, 새로 만들 때도 있고, 이미 구현된 것을 가져다 쓰는 경우도 많다.
그래서 가져다 쓸 때, new해서 갖다쓰지 않고 인스턴스로 가져다 쓴다. 그럴때 이게 싱글톤 패턴이구나? 라고 이해하면 좋겠죠?
단 하나만 존재하는 인스턴스 - sigleton pattern
생성자는 private으로, static으로 유일한 객체 생성
외부에서 유일한 객체를 참조할 수 있는 public static ger() 메서드 구현
어떤 객체가 new 되었을 때, 이 객체가 여러번 new 됨으로써 여러가지 인스턴스 변수를 갖게 되었을 경우 문제가 발생할 수도 있을때.. 음 예를들면 우리는 지금 타임존에 의해서 서울 중심의 시간대를 쓰고 있다. 그런데 여러 시간이 생성될 수도 있게 되면 문제가 발생 할 수 있다. 이럴때 어떻게 해결해야 하는가?
public class Skhu {
private static Skhu instance = new Skhu();
// 자기 자신의 타입을 가진 변수를 만든다. skhu가 내부에서 쓸 수 있는 생성자이기 떄문에
private Skhu() {}
//private라 외부에서 쓸 수가 없다.
public static Skhu getInstance() {
if(instance == null) {
instance = new Skhu();
}
return instance;
}
}
public class SkhuTest {
public static void main(String[] args) {
Skhu skhu1 = Skhu.getInstance();
Skhu skhu2 = Skhu.getInstance();
System.out.println(skhu1);
System.out.println(skhu2);
}
}
동일한 adress가 출력되는 것을 볼 수 있다.
java.util에 있는 class중 Calendar도 싱글톤 패턴으로 만들어진 예 이다.
Calendar calendar = Calendar.getInstance() {
}
// 자바 유틸에 있는 class
// 싱글톤 패턴으로 구현되어 있다. new로 생성 불가
// .getInstance()로만 가져 올 수 있다. 가져 올 수 있는것이 단 하나이기 때문에
728x90
반응형
'Java' 카테고리의 다른 글
[Java] Thread (0) | 2020.11.17 |
---|---|
[Java] 디자인패턴(DesignPattern) - 데코레이터 패턴(Decorator Pattern) (0) | 2020.11.12 |
[Java] 자바 성능 튜닝 - 반복문? 알고 쓰자! (3) | 2020.11.10 |
[Java] 디자인패턴(DesignPattern) -> 템플릿 메서드 패턴(template method pattern) (0) | 2020.11.10 |
[Java] stream method 정리 (0) | 2020.10.18 |
Comments