Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- SQL
- 아이폰
- 안드로이드
- Android SDK
- ibatis bind
- 자바
- 설치
- 연동
- 스프링
- 개행처리
- Spring
- ibatis parameter
- SEQUENCE
- IO
- Eclipse
- Android
- ibatis 개행
- 우편번호
- 예제
- zipcode
- Oracle
- Objective C
- jdbc
- 외래키
- 이클립스
- iPhone
- java
- MVC
- IT·컴퓨터
- 오라클
Archives
- Today
- Total
MisoBoy Blog...
Singleton Pattern (디자인 패턴) 본문
Singleton Pattern 은 언제 사용 할까요?
1. 어떤 클래스의 인스턴스가 반드시 1개만 존재하도록 하고 싶을때
2. 인스턴스가 1개밖에 존재하지 않을 것을 프로그램 상에서 표현하고 싶을 때
주로 위와 같은 조건일 때 사용 합니다.
아래의 예제 코드를 참고 해보도록 합시다.
public class Singleton { //클래스변수를 만들어서 딱 하나만 만들게 됩니다. private static Singleton singleton = new Singleton(); //아래와같이 생성자가 private로 두어서 메인에서 생성할 수 없게 합니다. private Singleton(){ System.out.println("인스턴스를 생성했습니다."); } //클래스 메소드로 딱 하나 만든 클래스변수를 반환하게 합니다. public static Singleton getInstance(){ return singleton; } }
public class Main { /** * @param args */ public static void main(String[] args) { System.out.println("Start."); Singleton obj1 = Singleton.getInstance(); Singleton obj2 = Singleton.getInstance(); if(obj1 == obj2){ System.out.println("obj1과 obj2는 같은 인스턴스 입니다"); } else{ System.out.println("obj1과 obj2는 다른 인스턴스입니다."); } System.out.println("End"); } }
결국 인스턴스는 하나만 만들어졌음을 알 수 있습니다.
public class Singleton{ private static Singleton singleton = null; private static Singleton(){ System.out.println("인스턴스를 생성했습니다."); } // 아래서 synchronized를 붙이는 이유는 한 쓰레드에 종속시키기 위해서이다. // 만약에 여러 쓰레드가 거의 동시에 Singleton 인스턴스를 만들경우 첫 if문에서 // 여러개가 null일 수도 있다. // 그러면 여러개의 인스턴스가 만들어지고 우리가 원하는 하나의 인스턴스를 생성하지 못한다 // 그래서 synchronized를 붙여서 한 쓰레드가 실행하면 다른쓰레드가 // 접근을 못하게 해서 한 인스턴스가 만들어 지게 해야한다. public static synchronized Singleton getInstance(){ if(singleton == null){ singleton = new Singleton(); } return singleton; } }r
'Java' 카테고리의 다른 글
Step 1. Java Platform (JDK) 7 설치 (0) | 2011.09.05 |
---|---|
Enumeration & Iterator (0) | 2011.09.01 |
Swing 을 이용한 DB 연동 프로그램 (0) | 2011.07.21 |
[20110720] ResultSetMetaData 객체를 사용하여 출력하는 예제 (0) | 2011.07.20 |
[20110720] JDBC 를 통한 DB 연동 (0) | 2011.07.20 |