티스토리 뷰
[java 27강] 디자인 패턴(Design Patterns) - 싱글톤 (singleton pattern)
국브 2018. 3. 15. 00:00[java 27강] 디자인 패턴(Design Patterns) - 싱글톤 (singleton pattern)
자바에는 많은 디자인 패턴이 있습니다.
디자인 패턴이 무엇인지 모르시는분? 은 아래의 링크로 먼저 가서 선행 부탁드립니다...
오늘은 디자인 패턴에서 가장많이? 쓰이는 싱글톤에 대해서 알아보겠습니다.
싱글톤은 객체를 하나만 만들수 있도록 하는 패턴이라고 보시면 됩니다.
객체를 만들때는 생성을 하여 사용을 하였죠?
근대 생성을 단 한번만 되도록 하는것 입니다.
객체를 하나만 만들어서 쓰일때가 있습니다.
여기저기서 객체를 생성해서 쓰는 구조보다는
하나의 객체를 공유하여 사용할때! 많이 쓰입니다.
이것도 안드로이드를 제작하다보면...
아! 이럴때 쓰이는구나 하는것이 보입니다.
그럼 우선 문법을 알고 있어야 겠죠?
바로 예제 들어갑니다.
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 32 33 | package test27; public class test27 { public static void main(String[] args) { Singleton a = Singleton.getSingleton(); Singleton b = Singleton.getSingleton(); a.setA(10); a.printA(); b.printA(); } } class Singleton{ private static Singleton test; private int a = 0; public static Singleton getSingleton(){ if(test == null){ test = new Singleton(); } return test; } public void setA(int i) { a = i; } public void printA() { System.out.println("변수 i의 값 : "+a); } } | cs |
결과
풀이
Singleton 톤이라는 클레스를 만들어 주었습니다.
그다음 private static Singleton test; 라는 객체를 만들어 주었습니다.
static 을 사용한이유는 바로바로 접근이 가능해야 하기때문입니다.
그리고 private int a = 0; 변수를 하나 만들어 주었습니다.
그다음
객체 생성용 메소드를 하나 만들어 주었습니다.
이메소드도 어디서든 접근이 가능하게 static 을 붙여주었습니다.
그리고 return 값은 Singleton 이라고 선언 해주었습니다.
객체 생성용 메소드 안에서 조건문을 넣어 줍니다.
Singleton test 가 null 이라면..
객체를 생성해주고...
만약 null 이 아니라면 조건문을 그냥 빠져나오고 Singleton test 을 return 해줍니다.
위에 만들어 놓은 변수 private int a = 0; 의 값을 넣을수 있는 메소드를 하나 만들어 주었습니다.
변수의 현재 값을 출력할수 있는 메소드도 하나 만들어 주었습니다.
그다음 main 으로 오시면...
Singleton a = Singleton.getSingleton(); 라고 작성되어 있습니다.
Singleton a 에 new 를 사용하여 작성하지 않고 클레스 안에 있는 메소드로 값을 넣어준 것을 볼수 있습니다.
이 부분이 싱글톤의 핵심입니다.
그리고 Singleton b = Singleton.getSingleton(); 라고 작성되어 있습니다.
하나의 객체가 생성되는지 확인을 위해 하나더 생성해 보았습니다.
그다음 a.setA(10); 로 변수에 값을 10을 넣어 주었습니다.
그다음 a.printA(); 과 b.printA(); 를 호출하였습니다.
결과는 같은값 10이 출력되는 것을 확인 할수 있습니다.
값을 a에만 넣었는대 b에도 값이 동일 하게 출력되는것....
그럼 결론은 같은 객체를 사용하고 있다는것이고..
싱글톤이 적용되었다고 볼수 있습니다.
위의 예제는 최대한 쉽게 작성하였습니다.
전문적으로 볼때 조금더 소스를 손봐야 하지만...
싱글톤을 쉽게 설명하기 위하여 최대한 쉽게 작성하였습니다.
(예제로는 문제가 없습니다.. ㅎㅎ)
이상으로 싱글톤에 대해서 알아보았습니다.
모두들 수고하세요^^
'Programming > JAVA, Spring' 카테고리의 다른 글
[java29강] try catch finally (예외처리) (2) | 2018.06.17 |
---|---|
[java28강] 예외(Exception) 종류 및 발생원인 (2) | 2018.06.15 |
[java 26강] 디자인 패턴(Design Patterns) (0) | 2018.03.08 |
[java 25강] 익명 클래스(Anonymous Class) (0) | 2018.03.06 |
[java 24강] 내부 클래스(Inner Class) (0) | 2018.03.05 |
- Total
- Today
- Yesterday
- java
- Javascript
- JQuery
- 티스토리
- 알뜰통신사 저렴한 요금제
- 티스토리 블로그
- 알뜰 저렴한 요금제
- 핸드폰 싼 요금제
- 별정통신 저렴한 요금제
- 별정통신사 저렴한 요금제
- 정보처리기사
- 자바스크립트
- 알뜰폰 저렴한 요금제
- 핸드폰 저렴한 요금제
- 티스토리초대장확인
- 티스토리 가입
- 티스토리 초대장
- 자바
- 무실적 체크카드
- 제이쿼리
- 제주도가볼만한곳
- jsp 태그
- 별정 저렴한 요금제
- 저렴한 요금제
- 0원 요금제
- 조던
- 1000원 요금제
- 알뜰통신 저렴한 요금제
- 핸드폰 만원 미만 요금제
- 초대장
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |