๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

#1 Language ๐Ÿ‘„/1-4 JAVA

[JAVA] ์‹ฑ๊ธ€ํ†ค(Singleton)

์‹ฑ๊ธ€ํ†ค (Singleton)


  • ์ „์ฒด ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋‹จ ํ•˜๋‚˜์˜ ๊ฐ์ฒด์˜ ์ƒ์„ฑ๋งŒ ๋ณด์žฅ๋˜๋Š” ๊ฒฝ์šฐ
  • ex) ํšŒ์‚ฌ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด ํšŒ์‚ฌ๋ช…์€ ํ•˜๋‚˜๋งŒ ์กด์žฌ
  • ์žฅ์ : ํ•œ๋ฒˆ์˜ ๊ฐ์ฒด ์ƒ์„ฑ์œผ๋กœ ์žฌ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Œ
  • ๋‹จ์ : ์‹ฑ๊ธ€ํ†ค์„ ์ˆ˜์ •ํ•  ๊ฒฝ์šฐ ์‹ฑ๊ธ€ํ†ค์„ ์‚ฌ์šฉํ•˜๋Š” ํด๋ž˜์Šค๋“ค์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ์–ด ํ”„๋กœ๊ทธ๋žจ ์ˆ˜์ •์ด ๋ณต์žกํ•ด์ง (์˜์กด๋„๊ฐ€ ๋†’์Œ - ์˜์กด๋„์™€ ๊ฒฐํ•ฉ๋„๊ฐ€ ๋‚ฎ์„์ˆ˜๋ก ์ข‹์€ ํ”„๋กœ๊ทธ๋žจ)

 

// ์‹ฑ๊ธ€ํ†ค ๊ฐ์ฒด์˜ ์„ ์–ธ
static ํด๋ž˜์Šค๋ช… singleton = new ์ƒ์„ฑ์ž();
// ์‹ฑ๊ธ€ํ†ค ๊ฐ์ฒด์˜ ์‚ฌ์šฉ
ํด๋ž˜์Šค๋ช….singleton
package Day03;

public class Singleton {
	// ์‹ฑ๊ธ€ํ†ค ๊ฐ์ฒด ์ƒ์„ฑ
	// ์ „์ฒด ํ”„๋กœ๊ทธ๋žจ์—์„œ ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋งŒ  ์ƒ์„ฑ ๊ฐ€๋Šฅ
	private static Singleton singleton = new Singleton();
	
	private Singleton() {
		
	}
	// ํด๋ž˜์Šค์—์„œ ์ƒ์„ฑ๋œ ์‹ฑ๊ธ€ํ†ค ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์†Œ๋“œ
	// ์ •์  ๋ฉ”์†Œ๋“œ์ด๊ณ  ๋ฐ˜ํ™˜ํƒ€์ž… Singleton ๊ฐ์ฒด์ธ gerIntance() ๋ฉ”์†Œ๋“œ
	static Singleton getIntance() {
		return singleton;
	}
	
}
package Day03;

public class _02_useOfsingleton {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// ์ด๋ฏธ Singleton ํด๋ž˜์Šค์— ํ•˜๋‚˜์˜ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ปดํŒŒ์ผ ์˜ค๋ฅ˜
		//Singleton s1 = new Singleton();
		
		// Singleton ํด๋ž˜์Šค์— ์ƒ์„ฑ๋˜์–ด ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜๋ฐ›์•„ ์‚ฌ์šฉ
		Singleton s1 = Singleton.getIntance();
		Singleton s2 = Singleton.getIntance();
		
		// ๊ฐ๊ฐ ๋‹ค๋ฅธ ๊ฐ์ฒด๋“ค์ด ์ƒ์„ฑ๋˜์–ด ์ €์žฅ
		Car car1 = new Car();
		Car car2 = new Car();
		
		
		if(s1 == s2) {
			System.out.println("๊ฐ™์€ singleton ๊ฐ์ฒด");
		} else {
			System.out.println("๋‹ค๋ฅธ singleton ๊ฐ์ฒด");
		}
		
		
		if(car1 == car2) {
			System.out.println("๊ฐ™์€ car ๊ฐ์ฒด");
		} else {
			System.out.println("๋‹ค๋ฅธ car ๊ฐ์ฒด");
		}		
	}

}
LIST