๐ ๏ธ ํจํด ์ค๊ณ ์ค๋ฅ ์ฌ๋ก ์๋ฒฝ ๊ฐ์ด๋
ํจํด ์ค๊ณ ์ค๋ฅ๋ ๋ฌด์์ธ๊ฐ?
ํจํด ์ค๊ณ ์ค๋ฅ๋ ์ํํธ์จ์ด ๊ฐ๋ฐ์์ ๋์์ธ ํจํด์ ์๋ชป ์ ์ฉํ๊ฑฐ๋ ์ค์ฉํ์ฌ ๋ฐ์ํ๋ ๋ฌธ์ ๋ฅผ ์๋ฏธํฉ๋๋ค. ์ฌ๋ฐ๋ฅธ ํจํด ์ฌ์ฉ์ ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ๋์ด์ง๋ง, ์๋ชป๋ ์ ์ฉ์ ์คํ๋ ค ๋ณต์ก์ฑ๊ณผ ์ค๋ฅ๋ฅผ ์ฆ๊ฐ์ํฌ ์ ์์ต๋๋ค.
TIP: ํจํด ์ค๊ณ ์ค๋ฅ๋ฅผ ์๋ฐฉํ๋ ค๋ฉด ํจํด์ ๋ชฉ์ ๊ณผ ํ๊ณ๋ฅผ ๋ช ํํ ์ดํดํ๊ณ , ์ค์ ์๊ตฌ์ฌํญ์ ๋ง๊ฒ ์ ์ฉํด์ผ ํฉ๋๋ค.
ํจํด ์ค๊ณ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ์ฃผ์ ์์ธ
- ํจํด์ ์ค์ฉ: ์ํฉ์ ๋ง์ง ์๋ ํจํด์ ๋ฌด๋ฆฌํ๊ฒ ์ ์ฉ
- ๊ณผ๋ํ ํจํด ์ฌ์ฉ: ๋ถํ์ํ๊ฒ ๋ณต์กํ ๊ตฌ์กฐ ๋์
- ํจํด์ ๋ถ์์ ํ ๊ตฌํ: ํต์ฌ ์์ ๋๋ฝ
- ์ ์ง๋ณด์์ฑ ์ ํ: ํจํด ์ ์ฉ ํ ์ฝ๋๊ฐ ๋ ์ด๋ ค์์ง
- ์ฑ๋ฅ ์ ํ: ๋ถํ์ํ ๊ฐ์ฒด ์์ฑ, ๊ณผ๋ํ ์ถ์ํ
Top 7 ํจํด ์ค๊ณ ์ค๋ฅ ์ฌ๋ก
1. ์ฑ๊ธํด ํจํด์ ๋จ์ฉ
- ๋ฌธ์ ์ : ๋ชจ๋ ๊ณณ์์ ์ธ์คํด์ค๊ฐ ํ๋๋ง ํ์ํ๋ค๋ ์คํด๋ก ๋จ์ฉ
- ๊ฒฐ๊ณผ: ํ ์คํธ ์ด๋ ค์, ์์กด์ฑ ์ฆ๊ฐ, ๋ฉํฐ์ค๋ ๋ ํ๊ฒฝ์์ ๋๊ธฐํ ๋ฌธ์
2. ํฉํ ๋ฆฌ ํจํด์ ๋ถํ์ํ ์ ์ฉ
- ๋ฌธ์ ์ : ๊ฐ์ฒด ์์ฑ์ด ๋จ์ํ๋ฐ๋ ํฉํ ๋ฆฌ ํจํด ์ฌ์ฉ
- ๊ฒฐ๊ณผ: ์ฝ๋ ๋ณต์ก์ฑ ์ฆ๊ฐ, ์ ์ง๋ณด์ ์ด๋ ค์
3. ์ต์ ๋ฒ ํจํด์ ๋ฉ๋ชจ๋ฆฌ ๋์
- ๋ฌธ์ ์ : ์ต์ ๋ฒ ๋ฑ๋ก ํด์ ๋๋ฝ
- ๊ฒฐ๊ณผ: ๋ฉ๋ชจ๋ฆฌ ๋์, ์๊ธฐ์น ์์ ๋์
4. ๋ฐ์ฝ๋ ์ดํฐ ํจํด์ ๊ณผ๋ํ ์ค์ฒฉ
- ๋ฌธ์ ์ : ๋ฐ์ฝ๋ ์ดํฐ๋ฅผ ๋๋ฌด ๋ง์ด ์ค์ฒฉ
- ๊ฒฐ๊ณผ: ๋๋ฒ๊น ๋ฐ ๊ด๋ฆฌ ์ด๋ ค์
5. ์ ๋ต ํจํด์ ์ ๋ต ๊ฐ์ฒด ๋จ๋ฐ
- ๋ฌธ์ ์ : ์ ๋ต์ด ๋๋ฌด ์ธ๋ถํ๋์ด ๊ฐ์ฒด๊ฐ ๋ง์์ง
- ๊ฒฐ๊ณผ: ์ฝ๋ ๊ฐ๋ ์ฑ ์ ํ, ๊ด๋ฆฌ ํฌ์ธํธ ์ฆ๊ฐ
6. ์ด๋ํฐ ํจํด์ ์๋ชป๋ ์ธํฐํ์ด์ค ๋งคํ
- ๋ฌธ์ ์ : ์ด๋ํฐ๊ฐ ์๋ ์ธํฐํ์ด์ค์ ๋ง์ง ์๊ฒ ๊ตฌํ
- ๊ฒฐ๊ณผ: ์์ธ ๋ฐ์, ์์ธก ๋ถ๊ฐํ ๋์
7. ํ ํ๋ฆฟ ๋ฉ์๋ ํจํด์ ๊ฐ์ ์ค๋ฒ๋ผ์ด๋ฉ
- ๋ฌธ์ ์ : ํ์ ํด๋์ค์์ ๋ฐ๋์ ์ค๋ฒ๋ผ์ด๋ฉํด์ผ ํ๋ ๋ฉ์๋๊ฐ ๋ง์
- ๊ฒฐ๊ณผ: ๋ถํ์ํ ์ฝ๋ ์ค๋ณต, ์ ์ง๋ณด์ ์ด๋ ค์
Top 7 ํจํด ์ค๊ณ ์ค๋ฅ ์ฌ๋ก ๋น๊ตํ
| ์์ | ํจํด๋ช | ์ฃผ์ ์ค๋ฅ ์์ธ | ๋ฐ์ ๊ฒฐ๊ณผ |
|---|---|---|---|
| 1 | ์ฑ๊ธํด | ๋จ์ฉ, ๋๊ธฐํ ๋ฌธ์ | ํ ์คํธ/์ ์ง๋ณด์ ์ด๋ ค์ |
| 2 | ํฉํ ๋ฆฌ | ๋ถํ์ํ ์ ์ฉ | ๋ณต์ก์ฑ ์ฆ๊ฐ |
| 3 | ์ต์ ๋ฒ | ๋ฑ๋ก ํด์ ๋๋ฝ | ๋ฉ๋ชจ๋ฆฌ ๋์ |
| 4 | ๋ฐ์ฝ๋ ์ดํฐ | ๊ณผ๋ํ ์ค์ฒฉ | ๊ด๋ฆฌ/๋๋ฒ๊น ์ด๋ ค์ |
| 5 | ์ ๋ต | ์ ๋ต ๊ฐ์ฒด ๋จ๋ฐ | ๊ฐ๋ ์ฑ ์ ํ |
| 6 | ์ด๋ํฐ | ์๋ชป๋ ์ธํฐํ์ด์ค ๋งคํ | ์์ธ, ์์ธก ๋ถ๊ฐ ๋์ |
| 7 | ํ ํ๋ฆฟ ๋ฉ์๋ | ๊ฐ์ ์ค๋ฒ๋ผ์ด๋ฉ | ์ฝ๋ ์ค๋ณต, ์ ์ง๋ณด์ ์ด๋ ค์ |
์ค์ ์ฝ๋ ์์๋ก ๋ณด๋ ํจํด ์ค๊ณ ์ค๋ฅ
โ ์๋ชป๋ ์ฑ๊ธํด ํจํด ๊ตฌํ ์์
public class BadSingleton {
private static BadSingleton instance;
private BadSingleton() {}
public static BadSingleton getInstance() {
if (instance == null) {
instance = new BadSingleton();
}
return instance;
}
}
- ๋ฌธ์ ์ : ๋ฉํฐ์ค๋ ๋ ํ๊ฒฝ์์ ์ธ์คํด์ค๊ฐ ์ฌ๋ฌ ๊ฐ ์์ฑ๋ ์ ์์
โ ๋ถํ์ํ ํฉํ ๋ฆฌ ํจํด ์ ์ฉ ์์
class SimpleObject:
pass
class SimpleFactory:
@staticmethod
def create_object():
return SimpleObject()
# ์ค์ ๋ก๋ ๊ทธ๋ฅ SimpleObject()๋ก ์ถฉ๋ถ
- ๋ฌธ์ ์ : ๋จ์ ๊ฐ์ฒด ์์ฑ์ ํฉํ ๋ฆฌ ํจํด์ ์ ์ฉํด ์ฝ๋๋ง ๋ณต์กํด์ง
โ ์ต์ ๋ฒ ํจํด ๋ฉ๋ชจ๋ฆฌ ๋์ ์์
public class Subject {
public event EventHandler MyEvent;
public void Notify() {
MyEvent?.Invoke(this, EventArgs.Empty);
}
}
// ์ต์ ๋ฒ ํด์ ์ฝ๋ ๋๋ฝ ์ ๋ฉ๋ชจ๋ฆฌ ๋์ ๋ฐ์
- ๋ฌธ์ ์ : ์ต์ ๋ฒ ํด์ (๊ตฌ๋ ํด์ง) ์ฝ๋๊ฐ ์์ผ๋ฉด ๋ฉ๋ชจ๋ฆฌ ๋์ ๋ฐ์
ํจํด ์ค๊ณ ์ค๋ฅ๋ฅผ ์๋ฐฉํ๋ ๋ฐฉ๋ฒ
โ
ํจํด์ ๋ชฉ์ ๊ณผ ํ๊ณ ๋ช
ํํ ์ดํดํ๊ธฐ
โ
์ค์ ์๊ตฌ์ฌํญ์ ๋ง๋ ํจํด๋ง ์ ์ฉํ๊ธฐ
โ
๊ณผ๋ํ ์ถ์ํ ๋ฐ ๊ฐ์ฒด ์์ฑ์ ํผํ๊ธฐ
โ
ํ
์คํธ์ ์ ์ง๋ณด์ ์ฉ์ด์ฑ ๊ณ ๋ คํ๊ธฐ
โ
์ฝ๋ ๋ฆฌ๋ทฐ ๋ฐ ๋ฆฌํฉํ ๋ง ์ ๊ทน ํ์ฉํ๊ธฐ
TIP: ํจํด์ ๋ง๋ฅ์ด ์๋๋๋ค. ์ํฉ์ ๋ง๋ ์ ์ ํ ์ ์ฉ์ด ๊ฐ์ฅ ์ค์ํฉ๋๋ค!
๊ฒฐ๋ก : ํจํด ์ค๊ณ ์ค๋ฅ, ์๋ฐฉ์ด ์ต์ ์ ํด๊ฒฐ์ฑ
ํจํด ์ค๊ณ ์ค๋ฅ๋ ๊ฐ๋ฐ ์์ฐ์ฑ๊ณผ ํ์ง์ ํฐ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ํจํด์ ๋ณธ์ง์ ์ดํดํ๊ณ , ์ค์ ํ๋ก์ ํธ์ ๋ง๊ฒ ์ ์คํ๊ฒ ์ ์ฉํ๋ค๋ฉด, ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ๊ทน๋ํํ ์ ์์ต๋๋ค. ์ฌ๋ฐ๋ฅธ ํจํด ์ฌ์ฉ์ผ๋ก ๋ ๋์ ์ํํธ์จ์ด๋ฅผ ๋ง๋ค์ด๋ณด์ธ์! ๐