Skip to content

Commit 301b061

Browse files
committed
feat: Add singleton pattern example1
1 parent 2670dab commit 301b061

File tree

2 files changed

+60
-0
lines changed

2 files changed

+60
-0
lines changed
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.hyeonah.javalabs.designpattern.singleton.ex1;
2+
3+
4+
import org.slf4j.Logger;
5+
import org.slf4j.LoggerFactory;
6+
7+
public class SystemSpeaker {
8+
private static final Logger log = LoggerFactory.getLogger(SystemSpeaker.class);
9+
10+
private static SystemSpeaker instance;
11+
private int volume;
12+
13+
private SystemSpeaker() {
14+
volume = 5;
15+
}
16+
17+
public static SystemSpeaker getInstance(){
18+
if(instance == null){
19+
instance = new SystemSpeaker();
20+
log.info("new create system speaker -");
21+
} else {
22+
log.info("system speaker already exist!");
23+
}
24+
25+
return instance;
26+
}
27+
28+
public int getVolume() {
29+
return volume;
30+
}
31+
32+
public void setVolume(final int volume) {
33+
this.volume = volume;
34+
}
35+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.hyeonah.javalabs.designpattern.singleton.ex1;
2+
3+
public class SystemSpeakerMain {
4+
5+
public static void main(final String[] args) {
6+
final SystemSpeaker speaker1 = SystemSpeaker.getInstance();
7+
final SystemSpeaker speaker2 = SystemSpeaker.getInstance();
8+
9+
/* ๋™์ผํ•œ ์ธ์Šคํ„ด์Šค ์ธ์ง€ ๋ณผ๋ฅจ ํ…Œ์ŠคํŠธ */
10+
System.out.println(speaker1.getVolume()); //5
11+
System.out.println(speaker2.getVolume()); //5
12+
13+
speaker1.setVolume(12);
14+
System.out.println(speaker1.getVolume()); //12
15+
System.out.println(speaker2.getVolume()); //13
16+
17+
speaker2.setVolume(33);
18+
System.out.println(speaker1.getVolume()); //33
19+
System.out.println(speaker2.getVolume()); //33
20+
21+
/* speaker1, speaker2์˜ ์ธ์Šคํ„ด์Šค์˜ ์ฃผ์†Œ๊ฐ’์ด ๊ฐ™๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. */
22+
System.out.println(speaker1); // SystemSpeaker@27a8c74e
23+
System.out.println(speaker2); // SystemSpeaker@27a8c74e
24+
}
25+
}

0 commit comments

Comments
ย (0)