studyplan
싱글톤 패턴 (Singleton pattern) - java 자바 /만드는 방법 ,만드는 이유 / 본문
싱글톤 패턴 (Singleton pattern) 만드는 방법

Speaker 타입의 싱글톤패턴의 ccmSpeaker 을 만드는중 ~~
package basic;
public class Speaker {
private static Speaker ccmSpeaker; // 유일한 Speaker 타입의 ccmSpeaker ccm스피커 ;
private int volume;
private Speaker() { volume = 6;}
public static Speaker getCcmSpeaker() {
// 이렇게 만드는 이유는
// 무분별한 new Speaker(); 사용을 막기 위해서 , 하나의 객체만 사용하기 위해서
// 이렇게 만들면
//getCcmSpeaker() 이걸 사용해야지만 만들수 있다
if (ccmSpeaker == null) {
ccmSpeaker = new Speaker();
}
return ccmSpeaker;
}
public int getVolume() {
return volume;
}
public void setVolume(int volume) {
this.volume = volume;
}
}
// 싱글톤으로 잘 만들어져있는지 확인하는 테스트 클래스

package basic;
public class SpeakerTest {
public static void main(String[] args) {
// Speaker ccmspeaker = new Speaker(); // 이거 안됨
Speaker ccmSpeaker1 = Speaker.getCcmSpeaker();
Speaker ccmSpeaker2 = Speaker.getCcmSpeaker();
// 여기서 기대할 점은 ?
// ccmSpeaker1 = ccmSpeaker2 같다는 점이다
// 유일하게 만들었기 때문에 둘은 같을수밖에 없다
System.out.println(ccmSpeaker1.getVolume());
System.out.println(ccmSpeaker2.getVolume());
ccmSpeaker1.setVolume(44);
System.out.println(ccmSpeaker1.getVolume());
System.out.println(ccmSpeaker2.getVolume());
// ccmSpeaker1 볼륨값을 44 로 세팅해도 ccmSpeaker1 와 ccmSpeaker2 는 같기때문에
// 둘다 볼륨은 44 로 나온다
ccmSpeaker2.setVolume(55);
System.out.println(ccmSpeaker1.getVolume());
System.out.println(ccmSpeaker2.getVolume());
// 마찬가지로 ccmSpeaker1 와 ccmSpeaker2 는 같기때문에
// ccmSpeaker2 에 볼륨을 55 로 세팅해도
// ccmSpeaker1 와 ccmSpeaker2 의 볼륨값은 55 이다
}
}
싱글톤 만드는 이유 >?
1. 싱글톤을 만듦으로써
Speaker 객체는 1개로 통일 된다
2. 무분별한 객체 생성을 막을 수 있다

ccmSpeaker1 와 ccmSpeaker2 의 주소값이 같다 = 고로 ccmSpeaker1 과 ccmSpeaker2는 같은 객체이다 !!
'자바정리' 카테고리의 다른 글
Comments