singletone 패턴이란?
: 프로그램에 인스턴스를 하나만 제공하기 위한 클래스를 만드는 것
1. Singletone.java
1) 정적 필드를 생성한다
private static Singletone _instance;
- private로 만드는 이유 : 접근하지 못하도록 하기 위해서
- static으로 하는 이유 : 이 클래스 내에서만 사용되게 하기 위함
- 보통 변수이름 앞에 _(언더바)를 이용하여 지어준다.(이렇게 만들면 setter,getter메소드를 만들지 말라는 개발자들의 규칙이라고 한다)
//싱글톤 디자인 패턴을 적용하여 작성한 클래스 - 싱글톤 클래스
//->프로그램에 인스턴스를 ★하나만★ 제공하기 위한 클래스
public class Singletone {
//현재 클래스의 인스턴스를 정보를 저장하기 위한 필드선언
//시스템필드(클래스 내부에서만 사용하는 필드)는 언더바로 표현 -> setter getter메소드를 만들지 말라는 뜻임
// private static Singletone _istance = new Singletone(); -> 별로 권장하지 않는 방법임
private static Singletone _instance; //클래스가 로드되면서 이 필드가 생성됨
//정적영역(Static Block) : 클래스가 메모리에 로딩된 후 자동실행될 수 있도록 하는 영역
//->여기에서 초기화 작업을 할 수 있음
//-> 정적영역의 명령은 단 한번만 실행된다.
static {
//이렇게 영역을 만들면 다양하게 초기화가 가능함
_instance = new Singletone(); //인스턴스가 만들어져 저장되어짐
}
//생성자를 은닉화 처리 - 인스턴스 생성불가함
private Singletone() {
// TODO Auto-generated constructor stub
}
//시스템필드에 저장된 인스턴스 정보를 반환하는 메소드다
public static Singletone getInstance() {
//static 영역을 쓰지 않고 아래와 같은 방법도 있다.(하지만 자바에서는 static영역을 만드는 것이 나음)
/*if(_instance == null)
* _instance = new Singletone();
* */
return _instance;//여기서 이제 인스턴스를 반환하게 됨
}
public void display() {
System.out.println("Singletone 클래스의 display()메소드를 호출합니다.");
}
}
2. SingletoneApp.java
: 참조변수를 이용해 객체를 만들지 않는 것을 권장한다
why? 여러개의 객체를 만들어도 어차피 하나의 인스턴스만 반환되게 할 것이므로
따라서 아래와 같은 방법으로 인스턴스를 호출한다.
Singletone.getInstance().display();
'💻 수업정리 (2020) > 자바' 카테고리의 다른 글
[6/11] 소켓통신을 이용한 채팅프로그램 만들어보기 (0) | 2020.06.11 |
---|---|
[6/10] 네트워크 (0) | 2020.06.10 |
[6/9] 파일처리 - 텍스트를 이용하여 파일저장, 출력 응용 (0) | 2020.06.09 |
[6/8] java.io패키지 (0) | 2020.06.08 |
[6/4] 버튼입력받아 계산기 만들기 (0) | 2020.06.04 |