싱글턴 패턴(Singleton pattern)
객체가 단 1개만 존재할 때 외부에서 new를 하지 못하게 막아주고
클래스 내부에서 new를 한 후 외부에서 선언이 아닌 사용만 해준다
try {
Thread.sleep(500);
} catch (InterruptedException e) {}
}
// 단축키: 영역 드래그 후 alt + shift + z => try cat 선택
스레드
try catch
(랜덤 값이 차례대로 0.5초에 하나씩 출력된다)
package single;
public class IronMan {
//싱글턴패턴은 new를 하면 안되기 때문에 생성자를 private으로 막아준다. 객체를 더이상 만들수 없게끔
private IronMan() {}
//외부에서 클래스로 직접 접근할 때는 static이 메모리에 자동으로 올라가게 해줘야 하기 때문에 static을 붙여준다
public static IronMan getInstance() { //getInstance : 객체를 얻어온다
IronMan im = new IronMan();
return im;
}
public static void fight() {
System.out.println("빔 발사");
}
public void walk() {
System.out.println("날아간다");
}
}
package single;
public class Stadium {
public static void main(String[] args) {
//IronMan i = new IronMan();
//IronMan은 private으로 막혀있으므로 Stadium에서 IronMan에 접근할 수 없다
}
}
접근 방법
package single;
public class Stadium {
public static void main(String[] args) {
//IronMan i = new IronMan();
//private으로 막혀있으므로 Stadium에서 IronMan을 사용할 수 없다!
IronMan.fight();; //클래스로 직접 접근한다
}
}
빔 발사
package single;
public class Stadium {
public static void main(String[] args) {
//IronMan i = new IronMan();
//private으로 막혀있으므로 Stadium에서 IronMan을 사용할 수 없다!
IronMan i = IronMan.getInstance();
//객체로 만들어서 점 찍고 싶을 때는 만들어 놨던 getInstance 사용
//이 때 i는 단 하나뿐인 클래스 안에 있는 그 객체이다
IronMan.fight();; //클래스로 직접 접근한다
i.walk();
}
}
빔 발사
날아간다
public static void fight() {
System.out.println("빔 발사");
}
fight가 static이여서 IronMan.fight(); 으로 직접접근이 가능하다
728x90
'Dev. > java' 카테고리의 다른 글
[Java] TMS 대중교통 터미널 시스템 만들기 (0) | 2022.06.17 |
---|---|
Java 추상 클래스 (0) | 2022.06.12 |
Java Casting/instance of (0) | 2022.06.11 |
Java 클래스 배열 (0) | 2022.06.11 |
Java 상속 (0) | 2022.06.11 |
댓글