Development Palette
싱글톤패턴(Singleton Pattern) 본문
싱글톤패턴(Singleton Pattern): 하나의 인스턴스만을 생성하고 사용할 경우에 쓴다
일반객체
public class Speaker1 extends Object{
private int volume;
public Speaker1() {
volume=5;
}
public int getVolume() {
return volume;
}
public void setVolume(int volume) {
this.volume = volume;
}
@Override
public String toString() {
return "볼륨: " + volume;
}
}
toString() 오버라이딩 안하면 주소값 출력됨
//일반 객체
public class Main1 {
public static void main(String[] args) {
Speaker1 s1=new Speaker1();
Speaker1 s2=new Speaker1();
Speaker1 s3=new Speaker1();
System.out.println(s1); // or s1.toString()
System.out.println(s2);
System.out.println(s3);
s1.setVolume(10);
System.out.println(s1.getVolume()); //10
System.out.println(s2.getVolume()); //5
System.out.println(s3.getVolume()); //5
s2.setVolume(20);
System.out.println(s1.getVolume()); //10
System.out.println(s2.getVolume()); //20
System.out.println(s3.getVolume()); //5
}
}
볼륨: 5
볼륨: 5
볼륨: 5
10
5
5
10
20
5
싱글톤패턴(Singleton Pattern)
public class Speaker2 {
private static Speaker2 speaker; //static
private int volume;
private Speaker2() {
volume=5;
}
public static Speaker2 getInstance() { //static
if(speaker==null)
speaker=new Speaker2();
return speaker; // <--- 이미 객체가 생성되어 있다면 기존 인스턴스를 리턴한다.
}
public int getVolume() {
return volume;
}
public void setVolume(int volume) {
this.volume = volume;
}
}
package com.testex.t0823_debug.singletonex;
/* 싱글톤패턴(Singleton Pattern): 하나의 인스턴스만을 생성하고 사용할 경우에 쓴다 */
public class Main2 {
public static void main(String[] args) {
Speaker2 s1 = Speaker2.getInstance();
Speaker2 s2 = Speaker2.getInstance();
Speaker2 s3 = Speaker2.getInstance();
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
System.out.println(s1.getVolume()); //5
System.out.println(s2.getVolume()); //5
System.out.println(s2.getVolume()); //5
s1.setVolume(10);
System.out.println(s1.getVolume()); //10
System.out.println(s2.getVolume()); //10
System.out.println(s3.getVolume()); //10
s2.setVolume(20);
System.out.println(s1.getVolume()); //20
System.out.println(s2.getVolume()); //20
System.out.println(s3.getVolume()); //20
}
}
com.testex.t0823_debug.singletonex.Speaker2@2a139a55
com.testex.t0823_debug.singletonex.Speaker2@2a139a55
com.testex.t0823_debug.singletonex.Speaker2@2a139a55
5
5
5
10
10
10
20
20
20
'Java' 카테고리의 다른 글
compareTo 정리 (0) | 2021.09.29 |
---|---|
HashMap 정렬 (0) | 2021.09.29 |
Comparator / Comparable (0) | 2021.08.22 |
직렬화 Serializtion (0) | 2021.08.22 |
메모리 (0) | 2021.08.08 |
Comments