๊ฐ์ฒด ์งํฅ ์ค๊ณ 5์์น
- ๊ฐ์ฒด ์งํฅ์ ๊ฐ๋
๊ณผ 4๋ ํน์ฑ
- ์ข์ ๋๊ตฌ์ ์๊ฒ๋จ.
- ์ข์ ๋๊ตฌ๊ฐ ์์ด๋ ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์์์ผ ์ข์ ์๋ฆฌ๊ฐ ๋์ด.
- ๊ฐ์ฒด ์งํฅ ์ค๊ณ (Object Oriented Design) 5์์น
- SOLID (๊ฐ์ฒด ์งํฅ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ)
- SRP (Single Responsibility Principle) : ๋จ์ผ ์ฑ ์ ์์น
- OCP (Open Closed Princinple) : ๊ฐ๋ฐฉ ํ์ ์์น
- LSP (Liskov Substitution Principle) : ๋ฆฌ์ค์ฝํ ์นํ ์์น
- ISP (Interface Segregation Principle) : ์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น
- DIP (Dependency Inversion Principle) : ์์กด ์ญ์ ์์น
- SOLID (๊ฐ์ฒด ์งํฅ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ)
์์ง๋๋ ๋์ด๊ณ ๊ฒฐํฉ๋๋ ๋ฎ์ถ๋ ๊ฐ์ฒด ์งํฅ์ ์์น์ ์งํฌ ์ ์๋ ๋ฐฉ๋ฒ๋ค.
-> ๊ฒฐํฉ๋๊ฐ ๋ฎ์ผ๋ฉด ๋ชจ๋ ๊ฐ์ ์ํธ ์์กด์ฑ์ด ์ค์ด๋ค์ด ๊ฐ์ฒด์ ์ฌ์ฌ์ฉ์ด๋ ์์ , ์ ์ง๋ณด์๊ฐ ์ฉ์ดํจ.
-> ์์ง๋๊ฐ ๋์ ๋ชจ๋์ ํ๋์ ์ฑ ์์ ์ง์คํ๊ณ ๋ ๋ฆฝ์ฑ์ด ๋์์ ธ ์ฌ์ฌ์ฉ์ด๋ ๊ธฐ๋ฅ์ ์์ , ์ ์ง๋ณด์๊ฐ ์ฉ์ดํจ.
SOLID๋ฅผ ๋ น์ฌ๋ธ ์ํํธ์จ์ด
SOLID๋ ์ํํธ์จ์ด์ ๋ น์ฌ๋ด์ผํ๋ ๊ฐ๋ .
- SOLID๋ฅผ ์ ๋ น์ฌ๋ธ ์ํํธ์จ์ด๋ ์ดํดํ๊ธฐ ์ฝ๊ณ ๋ฆฌํฉํฐ๋ง๊ณผ ์ ์ง๋ณด์๊ฐ ์ฝ๋ค.
- SOLID๋ ๊ฐ์ฒด ์งํฅ 4๋ ํน์ฑ์ ๋ฐํ์ผ๋ก ์ผ๊ณ ๋์์ธ ํจํด์ ๋ผ๋์ด๋ฉฐ ์คํ๋ง ํ๋ ์์ํฌ์ ๊ทผ๊ฐ์ด๋ค.
SRP - ๋จ์ผ ์ฑ ์ ์์น
"์ด๋ค ํด๋์ค๋ฅผ ๋ณ๊ฒฝํด์ผ ํ๋ ์ด์ ๋ ์ค์ง ํ๋๋ฟ์ด์ฌ์ผ ํ๋ค" - ๋ก๋ฒํธ C. ๋งํด
๋จ์๋ ๋๋ฌด ๋ง์ ์ญํ ๊ณผ ์ฑ ์์ ๊ฐ์ง๋ค
๊ฐ์ฒด ์งํฅ ์ธ๊ณ์์๋ ์ด๋ฐ ๊ฒฝ์ฐ "๋์ ๋์"๊ฐ ๋๋ค๊ณ ํ๋ค.
๋จ์์ ์ฑ ์์ ๋ถ๋ฆฌํด ์ฌ๋ฌ ๊ฐ์ ํด๋์ค๋ฅผ ๋ง๋ค์.
๋จ์๋ผ๋ ํด๋์ค๊ฐ ์ญํ ๊ณผ ์ฑ ์์ ๋ฐ๋ผ ๋ค ๊ฐ์ ํด๋์ค๋ก ์ชผ๊ฐ์ก๋ค. ํด๋์ค๋ช ๋ํ ์ญํ ๊ณผ ์ผ์นํ๊ธฐ ๋๋ฌธ์ ์ดํดํ๊ธฐ ์ฝ๋ค.
- ๋จ์ ์น๊ตฌ๋ ์ฌ์ ์น๊ตฌ์ ์ด๋ณํ๋๋ผ๋ ๋ค๋ฅธ ๊ณณ์๋ ์ํฅ์ ์ฃผ์ง ์๋๋ค.
- ๋จ์ผ ์ฑ ์ ์์น์ "์์ฑ, ๋ฉ์๋, ํจํค์ง, ๋ชจ๋, ์ปดํฌ๋ํธ, ํ๋ ์์ํฌ" ๋ฑ์ ์ ์ฉํ ์ ์๋ค.
์์ฑ์ SRP ์๋ฐฐ
- ๋ฌธ์ ์ฝ๋
public class ์ฌ๋ {
String ๊ตฐ๋ฒ;
public static void main(String[] args) {
์ฌ๋ ๋ก๋ฏธ์ค = new ์ฌ๋();
์ฌ๋ ์ค๋ฆฌ์ฃ = new ์ฌ๋();
์ค๋ฆฌ์ฃ.๊ตฐ๋ฒ = "11-730411994";
}
}
์ค๋ฆฌ์ฃ์ ์ฌ์์ด๋ฏ๋ก '๊ตฐ๋ฒ'์ ๊ฐ์ง ์ ์๋ค. ํ์ง๋ง ์ค๋ฆฌ์ฃ์ ๊ตฐ๋ฒ ์์ฑ์ ๊ฐ์ ํ ๋นํ๊ฑฐ๋ ์ฝ์ด์ฌ ์ ์๋ ์ฝ๋์ด๋ค.
๋ฐ๋ผ์ ์ด ์ฝ๋๋ ํ์ฌ ๋์๊ฐ ๋๊ณ ์๋ค...
**๊ฐ์ง ์ ์๋ ์์ฑ ๊ฐ์ **
์ด๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํด์ ๋จ์ ํด๋์ค๋ง ๊ตฐ๋ฒ์ ๊ฐ๊ฒ ํ๋ฉด๋๋ค. ์ฌ์์ ๋จ์์ ๊ณตํต์ ๋ง ๋ชจ์ ์ฌ๋ ํด๋์ค๋ฅผ ์์ ํด๋์ค๋ก ๋ง๋ค ์๋ ์๊ณ ๋์ ๊ณตํต์ ์ด ์๋ค๋ฉด ๋จ์ ํด๋์ค์ ์ฌ์ ํด๋์ค๋ก ๋๋ ์ ๊ตฌํํ ์ ์๋ค.
**ํ๋์ ์์ฑ์ด ์ฌ๋ฌ ์์ฑ์ ๊ฐ์ง๋ ๊ฒฝ์ฐ**
๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ์ ์กด์ฌํ๋ ํ๋์ ํ๋๊ฐ ์ฌ๋ฌ ์์ฑ์ ๊ฐ๋ฅดํค๊ฒ ๋๋ฉด ์ ๊ทํ๋ฅผ ํตํด ๋จ์ผ ์ฑ ์ ์์น์ ์ ์งํ๋๋ก ํด์ผํ๋ค.
๋ฉ์๋๊ฐ SRP ์๋ฐฐ
- ๋ฌธ์ ์ฝ๋
public class ๊ฐ์์ง {
final static Boolean ์ซ์ปท = true;
final static Boolean ์์ปท = false;
Boolean ์ฑ๋ณ;
void ์๋ณ๋ณด๋ค() {
if (this.์ฑ๋ณ == ์ซ์ปท) {
// ํ์ชฝ ๋ค๋ฆฌ๋ฅผ ๋ค๊ณ ์๋ณ์ ๋ณธ๋ค.
} else {
// ๋ค๋ค๋ฆฌ ๋ ๊ฐ๋ก ์์ ์์ธ๋ก ์๋ณ์ ๋ณธ๋ค.
}
}
}
๊ฐ์์ง๊ฐ "์์ปท"์ธ์ง "์์ปท"์ธ์ง์ ๋ฐ๋ผ ๋ฉ์๋์์ ๋ถ๊ธฐ ์ฒ๋ฆฌ๊ฐ ์งํ๋๊ณ ์๋ค.
์ด๋ ๊ฐ์์ง ํด๋์ค์์ "์๋ณ๋ณด๋ค"์ ์์ปท๊ณผ ์์ปท ๊ฐ์์ง์ ํ์๋ฅผ ๋ชจ๋ ๊ตฌํํ๋ ค๊ณ ํ๊ธฐ ๋๋ฌธ์ "๋จ์ผ ์ฑ ์ ์์น"์ ์๋ฐฐํ๊ฒ ๋์๋ค.
- ๊ฐ์ ์ฝ๋
package srp.good;
public abstract class ๊ฐ์์ง {
abstract void ์๋ณ๋ณด๋ค();
}
public class ์ซ์ปท๊ฐ์์ง extends ๊ฐ์์ง {
void ์๋ณ๋ณด๋ค() {
// ํ์ชฝ ๋ค๋ฆฌ๋ฅผ ๋ค๊ณ ์๋ณ์ ๋ณธ๋ค.
}
}
public class ์์ปท๊ฐ์์ง extends ๊ฐ์์ง {
void ์๋ณ๋ณด๋ค() {
// ๋ค๋ค๋ฆฌ ๋ ๊ฐ๋ก ์์ ์์ธ๋ก ์๋ณ์ ๋ณธ๋ค.
}
}
์ถ์ ๋ฉ์๋๋ฅผ ํตํด ํ์๊ฐ ๋ค๋ฅธ ๋ฉ์๋์ ๊ตฌํ์ ํ์ ํด๋์ค์๊ฒ ์์ํ๋ค.
-> ์์ปท๊ณผ ์์ปท ๊ฐ์์ง์ ์๋ก ๋ค๋ฅธ ํ์์ ๊ตฌํ์ ํ์ ํด๋์ค์ ๋งก๊ฒผ๊ธฐ ๋๋ฌธ์ "๋จ์ผ ์ฑ ์ ์์น"์ ์งํฌ ์ ์์๋ค.
"์์"์ "๋จ์ผ ์ฑ ์ ์์น"์ ์งํคํค ์ํ ๋๊ตฌ๋ก ์ฌ์ฉํ๋ค.
๋ชจ๋ธ๋ง์ ๋ด๋นํ๋ "์ถ์ํ"๋ "๋จ์ผ ์ฑ ์ ์์น"๊ณผ ๊ฐ์ฅ ๊ด๊ณ๊ฐ ๊น๋ค.
-> "์ ํ๋ฆฌ์ผ์ด์ ๊ฒฝ๊ณ(context)"๋ฅผ ์ ํ๊ณ ์ถ์ํ๋ฅผ ํตํด ํด๋์ค์ ์์ฑ๊ณผ ๋ฉ์๋๋ฅผ ์ค๊ณํ ๋ ๋ฐ๋์ ๋จ์ผ ์ฑ ์ ์์น์ ๊ณ ๋ คํ์!!
OCP - ๊ฐ๋ฐฉ ํ์ ์์น
์ํํธ์จ์ด ์ํฐํฐ(ํด๋์ค, ๋ชจ๋, ํจ์ ๋ฑ)๋ ํ์ฅ์ ๋ํด์๋ ์ด๋ ค ์๊ณ ๋ณ๊ฒฝ์ ๋ํด์๋ ๋ซํ ์์ด์ผ ํ๋ค." - ๋ก๋ฒํธ C. ๋งํด
--> ์ ์ธ์ฉ์ ์์ญํด๋ณด๋ฉด "์์ ์ ํ์ฅ์๋ ์ด๋ ค ์๊ณ , ์ฃผ๋ณ์ ๋ณํ์ ๋ํด์๋ ๋ซํ ์์ด์ผ ํ๋ค" ๋ผ๋ ๋ง์ด๋ผ๊ณ ํ๋ค...
<๋ฌธ์ ์ฝ๋>
์ด์ ์(์์ )๊ฐ "์๋ํ"๋ฅผ ์ด์ ํ๋ "๋งํฐ์ฆ"(์ฃผ๋ณ)๋ฅผ ์ด์ ํ๋ ํ๋์ ๋ณํ๊ฐ ์ค๋ฉด ์๋๋ค.
-> ์ฃผ๋ณ์ ๋ณํ์ ์์ ์ด ๋ณํํด์ผ ํ๋ ๊ฒฝ์ฐ (๋ฌธ์ )
ํ์ค ์ธ๊ณ ์๋ค๋ฉด ์์ ์ด ๋ณํํ๋ฉด ๋๋ ๋ฌธ์ ์ง๋ง ๊ฐ์ฒด์งํฅ ์ธ๊ณ๋ ๋ค๋ฅธ ํด๊ฒฐ์ฑ ์ ์ฌ์ฉํ๋ค.
- ๊ฐ์ ๋ฐฉ๋ฒ
์์ ํด๋์ค or ์ธํฐํ์ด์ค๋ฅผ ์ค๊ฐ์ ๋ ์ผ๋ก์จ ๋ค์ํ ์๋์ฐจ๊ฐ ์๊ธด๋ค๊ณ ํด๋ ๊ฐ์ฒด์งํฅ์ธ๊ณ์ "์ด์ ์"๋ ์ํฅ์ ๋ฐ์ง ์๊ฒ ๋๋ค.
- ์ด์ ์์ ์ ์ฅ์์ ์ฃผ๋ณ์ ๋ณํ์ ์ํฅ์ ๋ฐ์ง ์๊ฒ ๋๋ค. (๋งํฐ์ฆ - ์๋ํ ๋ ์ ๊ฒฝ์์)
- ์๋์ฐจ์ ์ ์ฅ์์ ์์ ์ ํ์ฅ์ ๊ฐ๋ฐฉ๋ ์๋ ๊ฒ์ด๋ค. (๋งํฐ์ฆ - ์๋ํ๋ก ํ์ฅ)
OCP์ ์
JDBC
- ์๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ JDBC ์ธํฐํ์ด์ค๋ฅผ ์์ถฉ ์ฅ์น ์ผ์ ๋ณํ์ ์ํฅ์ ๋ฐ์ง ์๊ฒ ๋๋ค. (๋ณํ์ ๋ซํ์์)
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ๊ต์ฒดํ๋ ๊ฒ์ ์์ ์ ํ์ฅ์ ์ด๋ ค์๋ ๊ฒ์ด๋ค. (ํ์ฅ์๋ ์ด๋ ค์์)
๋ค๋ฅธ ์๋ก๋
-> ๊ฐ๋ฐ์๊ฐ JVM์ด๋ผ๋ ์์ถฉ ์ฅ์น๊ฐ ์๊ธฐ์ ๊ฐ๋ฐ์๊ฐ ์์ฑํ ์์ค์ฝ๋๋ ์ด์์ฒด์ ์ ๋ซํ์๊ณ ๊ฐ ์ด์์ฒด์ ๋ณ JVM์ ํ์ฅ์ ์ด๋ ค์๋ ๊ตฌ์กฐ์ด๋ค.
๊ฐ๋ฐฉ ํ์ ์์น์ ๋ฌด์ํ๊ณ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ฉด ๊ฐ์ฒด ์งํฅ์ ์ฅ์ ์ธ ์ ์ฐ์ฑ, ์ฌ์ฌ์ฉ์ฑ, ์ ์ง๋ณด์์ฑ ๋ฑ์ ์ด์ ์ ์ป์ ์ ์๋ค.
==> ๊ทธ ์ญํ ์ ์ฃผ์ด์ง ์ฑ ์์ ์ํํ ์ ์๋ค๋ฉด ๋๊ตฌ๋ ๊ทธ ์ญํ ์ด ๋ ์ ์๋ค.
==> ์คํ๋ง์ ๊ฐ๋ฐฉ ํ์ ์์น์ ๊น์ฐ์๋ผ๊ณ ํ ์ ๋๋ก ์์น์ ์ ํ์ฉํ๊ณ ์๋ค.
⇒ ํ์ฅ์ ๋ชปํ๊ณ ๋ณํ์ ์ํฅ์ ๋ฐ์ง ์๋๋ค..??? (DIP!!)
LSP - ๋ฆฌ์ค์ฝํ ์นํ ์์น
"์๋ธ ํ์ ์ ์ธ์ ๋ ์์ ์ ๊ธฐ๋ฐ ํ์ (base type)์ผ๋ก ๊ต์ฒดํ ์ ์์ด์ผ ํ๋ค" - ๋ก๋ฒํธ C. ๋งํด
์์์์ ๊ธฐ์ตํด์ผ ํ ๊ฒ -> ๊ฐ์ฒด ์งํฅ์ ์์์ ๊ณ์ธต๋๊ฐ ์๋ ๋ถ๋ฅ๋๊ฐ ๋์ด์ผ ํ๋ค. (์ํผํด๋์ค ์๋ธํด๋์ค ๊ตฌ์กฐ)
- ๋ฆฌ์ค์ฝํ ์นํ ์์น์ ์ ์งํค๊ณ ์๋ ํด๋์ค
- ํ์ ํด๋์ค is a kind of ์์ ํด๋์ค - ํ์ ๋ถ๋ฅ๋ ์์ ๋ถ๋ฅ์ ํ ์ข ๋ฅ์ด๋ค.
- ๊ตฌํ ํด๋์ค is able to ์ธํฐํ์ด์ค - ๊ตฌํ ๋ถ๋ฅ๋ ์ธํฐํ์ด์คํ ์ ์์ด์ผ ํ๋ค.
์๋ชป๋ ์์ ์์ (๊ณ์ธต๋)
์๋ฒ์ง - ๋ธ (๊ธฐ๋ฐ ํ์ - ์๋ธ ํ์ )์ ๊ณ์ธต๋ ํํ์ ์๋ชป๋ ์์์ด๋ผ๊ณ ๋ณผ ์ ์๋ค.
๊ทธ๋ ๋ค๋ฉด ๋ฌด์์ด ๋ฌธ์ ์ผ๊น? ํ๋ฒ ๋ฆฌ์ค์ฝํ ์นํ ๋ฒ์น์ ์ ์ฉํด๋ณด์.
- ์๋ฒ์ง ์ถํฅ์ด = new ๋ธ() -> ๋ถ๊ฐ๋ฅ!!!!
๋ธ์ด ํ์ด๋ ์๋ฒ์ง์ ์ญํ ์ ํ๋ ๊ฒ์ ๋ง์ด ์๋๋ค.
์ถํฅ์ด๋ ์๋ฒ์งํ ๊ฐ์ฒด ์ฐธ์กฐ ๋ณ์๋ฅผ ๊ฐ์ง๋ฏ๋ก ์๋ฒ์ง ๊ฐ์ฒด๊ฐ ๊ฐ์ง ํ์๋ฅผ ํ ์ ์์ด์ผ ํ๋ค...(ํ ์ ์์)
์ฌ๋ฐ๋ฅธ ์์ (๋ถ๋ฅ๋)
- ๋๋ฌผ ๋ฝ๋ก๋ก = new ํญ๊ท()
ํญ๊ท ํ ๋ง๋ฆฌ๊ฐ ์๋กญ๊ฒ ํ์ด๋ ๋๋ฌผ์ ํ์๋ฅผ ํ๋ค. -> ์ด์ํ ์ ์์
๋ฆฌ์ค์ฝํ ์นํ ์์น์ ๋ง์กฑํ๋ค.
**๊ฒฐ๋ก **
-> "ํ์ ํด๋์ค ์ธ์คํด์ค๋ ์์ํ ๊ฐ์ฒด ์ฐธ์กฐ ๋ณ์์ ๋์ ํด ์์ ํด๋์ค์ ์ธ์คํด์ค ์ญํ ์ ํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์ด์ผ ํ๋ค"
๋ฆฌ์ค์ฝํ ์นํ ์์น์ ์์์ด๋ผ๋ ํน์ฑ์ ์ฌ๋ฐ๋ฅด๊ฒ๋ง ์ฌ์ฉํ๋ฉด ์์ฐ์ค๋ฝ๊ฒ ์ป์ ์ ์๋ค.
๊ทธ๋ ๋ค๋ฉด ๋ฆฌ์ค์ฝํ ์นํ ์์น์ด ์๋ฐฐ๋์์ ๋ ์ด๋ค ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋๊ฐ?
ISP - ์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น
ํด๋ผ์ด์ธํธ๋ ์์ ์ด ์ฌ์ฉํ์ง ์๋ ๋ฉ์๋์ ์์กด ๊ด๊ณ๋ฅผ ๋งบ์ผ๋ฉด ์ ๋๋ค." - ๋ก๋ฒํธ C. ๋งํด
๋จ์ผ์ฑ ์ ์์น์ ์ ์ฉํ๊ธฐ ์ ๋จ์ ํด๋์ค๋ฅผ ์ดํด๋ณด์.
์๋ก ๊ฐ์ ์ํฅ์ ์ค์ด๊ธฐ ์ํด "๋จ์ผ ์ฑ ์ ์์น"์ ์ ์ฉ์ํฌ ์ ์์๋ค.
์ด๋ ํด๋์ค๋ฅผ ํ ๋ง๋ด๋ ๊ฒ ๋ง๊ณ ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์์๊น???
์๋ก์ด ๋ฐฉ๋ฒ : ์ธํฐํ์ด์ค ๋ถํ ์์น
์ด ๋ฐฉ๋ฒ์ ๋จ์ ํด๋์ค๋ฅผ ์ฑ ์๊ณผ ์ญํ ์ ๋ฐ๋ผ ํด๋์ค๋ฅผ ์ชผ๊ฐ๋ ๊ฒ์ด ์๋๋ค.
๋์ ๋จ์๋ฅผ ๋ค์ค ์ธ๊ฒฉํ(?)(์ ํ)์์ผ
์ง์ฅ์์ฌ์ ์์ ๋ "์ถ๊ทผํ๊ธฐ(), ์๋ถํ๊ธฐ()" ํ์๋ง ํ๋๋ก ์ ํํ๊ณ
์ด๋จธ๋์ ์์ ๋ "ํจ๋ํ๊ธฐ(), ์๋งํ๊ธฐ()" ํ์๋ง ํ๋๋ก ์ ํ์ํค๋ ๋ฐฉ๋ฒ์ด๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก "๋จ์ผ ์ฑ ์ ์์น"๊ณผ "์ธํฐํ์ด์ค ๋ถํ ์์น"์ ๊ฐ์ ๋ฌธ์ (๋ค์ค ์ฑ ์)์ ๋ํ ๋ ๊ฐ์ง ๋ค๋ฅธ ํด๊ฒฐ์ฑ ์ด๋ค.
- ์ธํฐํ์ด์ค ๋ถํ ์์น์ ์ธํฐํ์ด์ค ์ต์์ฃผ์ ์์น์ ๊ฐ์ง๋ค.
- ์ต์์ฃผ์๋ ์ธํฐํ์ด์ค๋ฅผ ํตํด ์ธ๋ถ์ ๋ฉ์๋ ์ ๊ณต์ ์ต์ํ์ ๋ฉ์๋๋ง ์ ๊ณตํด์ผํ๋ค.
- ์๋ฅผ ๋ค์ด, ์ฌ์ ์ธํฐํ์ด์ค์ ํค์คํ๊ธฐ() ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ฉด ์๋๋ ๊ฒ๊ณผ ๊ฐ์ ์ด์ ์ด๋ค. (์ฌ์์ ์ฑ ์์ ๋ถํฉํ์ง ์๋๋ค.)
์์ ํด๋์ค๋ ํ์ฑํ ์๋ก ์ข๊ณ "์ธํฐํ์ด์ค"๋ ์์์๋ก ์ข๋ค.
๋น์ฝํ ์์ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ฉด ์์ฑ๊ณผ ๋ฉ์๋๊ฐ ํ์ํด๋์ค์์ ์ค๋ณต๋๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ๋ค.
ํ์ง๋ง ํ์ฑํ ์์ ํด๋์ค์์๋ ํ์ ํด๋์ค์์ ๊ณตํต์ผ๋ก ๊ฐ์ง ์์ฑ๊ณผ ๋ฉ์๋๋ฅผ ์์ํ๋ค.
DIP - ์์กด ์ญ์ ์์น
"๊ณ ์ฐจ์ ๋ชจ๋์ ์ ์ฐจ์ ๋ชจ๋์ ์์กดํ๋ฉด ์๋๋ค. ์ด ๋์ ๋ชจ๋ ๋ค๋ฅธ ์ถ์ํ๋ ๊ฒ์ ์์กดํด์ผํ๋ค."
"์ถ์ํ ๋ ๊ฒ์ ๊ตฌ์ฒด์ ์ธ ๊ฒ์ ์์กดํ๋ฉด ์๋๋ค. ๊ตฌ์ฒด์ ์ธ ๊ฒ์ด ์ถ์ํ๋ ๊ฒ์ ์์กดํด์ผํ๋ค."
์์ ์์์ฒ๋ผ ์๋์ฐจ์ ์ค๋ ธ์ฐํ์ด์ด ์ฌ์ด์๋ ์์กด ๊ด๊ณ๊ฐ ์กด์ฌํ๋ค.
์๋์ฐจ๊ฐ ์ค๋ ธ์ฐํ์ด์ด์ ์์กดํ๋ ๊ด๊ณ์ด๋ค.
์๋์ฐจ๋ 10๋ ์ด์๋ ํ ์ ์์ง๋ง ์ค๋ ธ์ฐํ์ด์ด๋ ๊ณ์ ์ด ๋ฐ๋๋ฉด ์ผ๋ฐ ํ์ด์ด๋ก ๋ฐ๊ฟ์ค์ผ ํ๋ค.
-> ์ฆ, ์ค๋ ธ์ฐํ์ด์ด๊ฐ ์๋์ฐจ๋ณด๋ค ์์ฃผ ๋ณ๊ฒฝ๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์๋์ฐจ๋ ์์ ๋ณด๋ค ์์ฃผ ๋ณ๊ฒฝ๋๋ ํด๋์ค์ ์์กดํด ๋ถ์์ง๊ธฐ ์ฝ๊ณ ๋์๋ฅผ ํ๊ธฐ๋ ํด๋์ค์ด๋ค. ์ด๋ฅผ ๊ฐ์ ํด๋ณด์!
๊ฐ์ ๋ฐฉ๋ฒ
์ ๊ทธ๋ฆผ์ฒ๋ผ ์๋์ฐจ๊ฐ "์ค๋ ธ์ฐํ์ด์ด"๊ฐ ์๋ ์ถ์ํ๋ ํ์ด์ด ์ธํฐํ์ด์ค์ ์์กดํ๊ฒ ํด๋ณด์.
์ธํฐํ์ด์ค์ ๊ตฌํ์ฒด๊ฐ ๋ณ๊ฒฝ(์ค๋ ธ์ฐ -> ์ผ๋ฐ)๋๋ ์๋์ฐจ๋ ๊ทธ ์ํฅ์ ๋ฐ์ง ์๋๋ค.
์ด ํด๊ฒฐ์ฑ ์ "๊ฐ๋ฐฉ ํ์ ์์น"๋ ๋ น์๋ค์ด ์๋ ๊ฒ์ ๋ณผ ์ ์๋ค. ํ๋์ ํด๊ฒฐ์ฑ ์ ์ฌ๋ฌ ์ค๊ณ๋ฅผ ์ฐพ์ ์ ์๋ค.
์, ๊ทธ๋ฌ๋ฉด ์ "์์กด ์ญ์ ์์น"์ด๋ผ๊ณ ๋ถ๋ฅผ๊น??
์ด์ ๊ฐ์ ๋ ๋ฐฉ๋ฒ์ ์ค๋ ธ์ฐํ์ด์ด์ ๊ธฐ์กด ๋ฐฉ๋ฒ์ ์ค๋ ธ์ฐํ์ด์ด๋ฅผ ๋น๊ตํด๋ณด์.
๊ธฐ์กด ์ค๋ ธ์ฐํ์ด์ด๋ ์ด๋ค ๊ณณ์๋ ์์กดํ์ง ์๋ ํด๋์ค์์ง๋ง ๊ฐ์ ๋ฐฉ๋ฒ์์ ์ถ์์ ์ธ ํ์ด์ด ์ธํฐํ์ด์ค์ ์์กดํ๊ฒ ๋์๋ค.
์ฆ, ์๋์ฐจ๋ ์์ ์ด ์์กดํ๋ ํ์ด์ด ๋์ ๋ ์ถ์ํ๋ ํ์ด์ด ์ธํฐํ์ด์ค์ ์์กดํ๊ณ ์ค๋ ธ์ฐ ํ์ด์ด ๋ํ ์ถ์์ ์ธ ํ์ด์ด ์ธํฐํ์ด์ค์ ์์กดํ๋๋ก ํ๋ ๊ฒ์ด๋ค. (์์กด ๋ฐฉํฅ์ด ๋ฐ๋ ๊ฒ์ ๋ณผ์ ์๋ค)
⇒ ํ์ฅ์ ๋ชปํ๊ณ ๋ณํ์ ์ํฅ์ ๋ฐ์ง ์๋๋ค..??? (DIP!!)
**๊ฒฐ๋ก -> "์์ ๋ณด๋ค ๋ณํ๊ธฐ ์ฌ์ด ๊ฒ์ ์์กดํ์ง ๋ง๋ผ." **