์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- hikari cp ์ค์
- ์ดํํฐ๋ธ์๋ฐ
- SVN
- ์ธ๋ฑ์ค์คํต์ค์บ
- Item6
- builder null
- ์ธ๋ฑ์คํ์ค์บ
- index full scan
- ์๋ฐ์์
- ๋น์ผ๊ฐ์ฒด์์ฑ
- ์์
- index skip scan
- ์์ดํ 15
- mysql์ํคํ ์ฒ
- ์๋ฐ
- InnoDB์ํคํ ์ฒ
- enum ์์ฑ์ ์ ๊ทผ ์ ํ์
- ์ํฐ๋ ๊ฐ๋ฐ์ํ์ฌ
- assert.notnull
- ์ํฐ๋ ๋ณ์ข ๊ฐ๋ฐ์
- ์๋ฐ๋ผ์ด๋ธ์คํฐ๋
- ๋ฐ์ฉ๋ ์ค๊ตญ์ด
- ์๋ผ์คํฑ์์น๋ฉ์ธ์ง์ฉ๋
- ์๋ฐ์์์ฐ๋ ๋๋ฅผ ์ฌ์ฉํ๋ ์ด์
- Hikari Connection Pool
- item15
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฒฉ๋ฆฌ์์ค
- effectiveJava
- mysql
- ์๋ฐ์ฐ๋ ๋
- Today
- Total
โ๐ป๊ธฐ๋กํ๋ ๋ธ๋ก๊ทธ
[ JAVA ] static ์์ฉ - singleton pattern ๋ณธ๋ฌธ
์ฑ๊ธํค ํจํด
ํ๋ก๊ทธ๋จ ๋ด์ ๋จ ํ๋๋ง ์กด์ฌํด์ผ ํ๋ ๊ฒฝ์ฐ, ๊ฐ์ฒด๋ฅผ ์ฌ๋ฌ ๋ฒ new ์์ฑ ์ ์ฌ๋ฌ ๊ฐ์ ์ธ์คํด์ค๊ฐ ์์ฑ๋์์ ๋ ๋ฌธ์ ๊ฐ ์๊ธฐ๋ ๊ฒฝ์ฐ
static์ผ๋ก ์ ์ผํ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.
์ฑ๊ธํค ํจํด ๊ตฌ์ฑ
์์ ๋ํ์์ - ๋ private ์ ๊ทผ ์ ํ์๋ฅผ ๊ฐ๋ฆฌํด
์ฑ๊ธํค ์ ์ฒด ๊ตฌ์ฑ
public class Company {
private static Company instance = new Company();
private Company() {}
public static Company getInstance() {
if (instance == null) {
return new Company();
}
return instance;
}
}
1. private ์์ฑ์
private Company() { }
- ๋ง์ฝ ํด๋์ค ๋ด๋ถ์ ์์ฑ์๋ฅผ ์ฌ์ฉ์๊ฐ ์์ฑํ์ง ์์ผ๋ฉด ์ปดํ์ผ๋ฌ๊ฐ ์ปดํ์ผํ๋ฉด์ ์๋์ผ๋ก ์์ฑ์๋ฅผ ์์ฑํ๋ค.
- → ์ด๋ ์ด๋์๋ ํด๋์ค๋ฅผ ์ธ์คํด์คํ ํ ์ ์๋ค๋ ์๋ฏธ → ์ธ๋ถ์์ ํธ์ถ์ด ๋ถ๊ฐํ private ์์ฑ์๋ฅผ ๊ตฌํ
- private ๋ณ์์ด๋ฏ๋ก ์ธ๋ถ์์๋ ํธ์ถ์ด ๋ถ๊ฐํ์ฌ ์ธ์คํด์ค ์์ฑ์ด ๋ถ๊ฐํ๋ค.
2. static ์ธ์คํด์ค
private static Company instance = new Company();
- ์์คํ ๋ด์์ ์ ์ผํ๊ฒ ์์ฑ๋ ์ธ์คํด์ค
3. static ๋ฉ์๋
public static Company getInstance() {
if (instance == null) {
return new Company();
}
return instance;
}
- ์ ์ผํ ๊ฐ์ฒด๋ฅผ ์ธ๋ถ์์ ๊ฐ์ ธ๋ค ์ฐ๋ ์ฉ๋๋ก public ๋ฉ์๋ ์์ฑํ๋ค.
- company ์ธ์คํด์ค๊ฐ static์ด ์ด์๊ฐ ์๋๋ผ ์ธ์คํด์ค์ ์์ฑ๊ณผ ์๊ด์์ด ๋ฉ์๋๋ฅผ ํธ์ถํ๊ธฐ ์ํด ์์ฑํ๋ค.
- ๊ตฌ์ฒด์ ์ธ ์ธ์คํด์ค์ ์ํ๋ ์์ฌ๊ธฐ ์๋๊ณ ํด๋์ค ์์ฒด์ ์ํ๋ค.
- ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ํตํ์ง ์๊ณ ์๋ ๋ฉ์๋๋ฅผ ์คํํ ์ ์๋ค.
์ฑ๊ธํค ์คํ๊ฒฐ๊ณผ
public class CompanyTest {
public static void main(String[] args) {
Company company1 = Company.getInstance();
Company company2 = Company.getInstance();
System.out.println(company1);
System.out.println(company2);
}
}
์คํผํด๋ณด๋ฉด company1 company2๊ฐ ๋์ผํ ์ฃผ์๋ฅผ ๊ฐ์ง์ ํ์ผ ํ ์ ์๋ค.
์๋ฐ ๋ด๋ถ ํด๋์ค ์ค ์ฑ๊ธํค์ผ๋ก ์์ฑ๋ ํด๋์ค๊ฐ ์๋ค.
Calendar calendar = Calendar.getInstance();
๋ ์ง๋ ํ๋์ ๊ฐ์ฒด์์ ๋ถ๋ ค์ง๊ณ ๋งค๋ฒ ๋ฌ๋ผ์ง๋ฉด ์ ๋๋ ๊ฐ์ด๋ค.
getInstance๋ฅผ ํธ์ถํ๋ ํ๋ผ๋ฏธํฐ์ ๋ฐ๋ผ ํธ์ถ๋๋ ๋ฉ์๋๊ฐ ๋ฌ๋ผ์ง๋ค.
๋ง์ฝ Calendar๊ฐ์ฒด๋ฅผ new ์ฐ์ฐ์๋ฅผ ์ด์ฉํ์ฌ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ฉด ์ด๋ป๊ฒ ๋ ๊น?
Calendar ๊ฐ์ฒด๋ ์ฑ๊ธํค ํจํด์ผ๋ก ์์ฑ๋ ํด๋์ค ( private ์์ฑ์๋ก ๊ตฌ์ฑ) ์ด๋ฏ๋ก ์ธ์คํด์คํ๊ฐ ๋ถ๊ฐํ๋ค๊ณ ๋ฉ์์ง๊ฐ ๋ฌ๋ค.
'Language > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JAVA] ์์ธ์ฒ๋ฆฌ (0) | 2020.11.22 |
---|---|
[ JAVA ] ์์ (0) | 2020.11.15 |
[ JAVA ] Stack์ ์ ์ ๋ฐ ArrayList๋ก Stack๊ตฌํํ๊ธฐ (0) | 2020.10.04 |
[ JAVA ] ์ ๋ณด์๋ - ์ ๊ทผ ์ ํ์ (0) | 2020.09.10 |
[ JAVA ] ์์ฑ์์ ์์ฑ์ ์ค๋ฒ๋ก๋ฉ (0) | 2020.09.04 |