Small Grey Outline Pointer Java :: 다형성/ 싱글턴 패턴
본문 바로가기
Dev./java

Java :: 다형성/ 싱글턴 패턴

by sso. 2022. 6. 12.

싱글턴 패턴(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

댓글