ํฐ์คํ ๋ฆฌ ๋ทฐ
๋ฐ์ํ
โ ๊ฐ์ฒด ์งํฅ ์ค๊ณ ์์น SOLID
๊ฐ์ฒด์งํฅ ์ค๊ณ 5๋ ์์น(SOLID)๋ค์ ์ฝ๋์ ์ ์ง๋ณด์์ฑ, ํ์ฅ์ฑ, ์ฌ์ฌ์ฉ์ฑ์ ๋์ด๊ณ ๊ฒฐํฉ๋๋ ๋ฎ์ถ๋ฉฐ ์์ง๋๋ ๋์ด๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ณ๊ฒฝ์ ์ ์ฐํ๊ณ ๊ฒฌ๊ณ ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค์ ์์ต๋๋ค.
1. ๋จ์ ์ฑ ์ ์์น - SRP (Single Responsibility Principle)
- ํ๋์ ํด๋์ค๋ ํ๋์ ์ฑ ์๋ง ๊ฐ์ ธ์ผ ํ๋ค.
- ํด๋์ค๋ ํ๋์ ๊ธฐ๋ฅ ๋๋ ์ญํ ์ ๊ฐ์ ธ์ผ ํ๋ฉฐ, ๊ทธ ์ธ์ ๋ค๋ฅธ ์ฑ ์์ ๋งก์ง ์์์ผ ํ๋ค๋ ์์น์ ๋๋ค. ์ด ์์น์ ๋ฐ๋ฆ์ผ๋ก์จ ํด๋์ค๊ฐ ๋ช ํํ ๋ชฉ์ ์ ๊ฐ์ง๊ฒ ๋๊ณ , ๋ณํ๊ฐ ํ์ํ ๋ถ๋ถ์ด ์๊ธฐ๋ฉด ํ ๊ณณ๋ง ์์ ํ ์ ์์ด ์ ์ง๋ณด์๊ฐ ์ฌ์์ง๋๋ค.
์ฌ์ฉ์์ ๋ก๊ทธ์ธ๊ณผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฒ๋ฆฌ๋ฅผ ๋์์ ๋ด๋นํ๋ ํด๋์ค ๋์ , ๊ฐ๊ฐ์ ์ญํ ์ ๋ด๋นํ๋ loginService์ DatabaseServiceํด๋์ค๋ฅผ ๋ถ๋ฆฌํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
2. ๊ฐ๋ฐฉ ํ์ ์์น - OCP (Open-Closed Principle)
- ํด๋์ค๋ ํ์ฅ์๋ ์ด๋ ค ์์ด์ผ ํ๊ณ , ์์ ์๋ ๋ซํ ์์ด์ผ ํ๋ค.
- ์๋ก์ด ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋ ๋ ๊ธฐ์กด ์ฝ๋๋ฅผ ์์ ํ์ง ์๊ณ , ํ์ฅํ์ฌ ์ฌ์ฉํ ์ ์์ด์ผ ํ๋ค๋ ์์น์ ๋๋ค. ์ด๋ฅผ ํตํด ๊ธฐ์กด ์ฝ๋๊ฐ ๋ณ๊ฒฝ๋์ง ์๊ธฐ ๋๋ฌธ์ ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ ํ๋ฅ ์ ์ค์ผ ์ ์์ต๋๋ค.
์๋ก์ด ๊ธฐ๋ฅ์ด ํ์ํ ๋ ๊ธฐ์กด ํด๋์ค๋ฅผ ์์ ํ๋ ๋์ , ๊ธฐ์กด ํด๋์ค๋ฅผ ์์ํ๊ฑฐ๋ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ์ฌ ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
3. ๋ฆฌ์ค์ฝํ ์นํ ์์น - LSP (Liskov Substitution Principle)
- ์๋ธ ํ์ ์ ์ธ์ ๋ ๊ธฐ๋ฐ ํ์ ์ผ๋ก ๊ต์ฒดํ ์ ์์ด์ผ ํ๋ค.
- ์์ ํด๋์ค๋ ์ธ์ ๋ ๋ถ๋ชจ ํด๋์ค๋ฅผ ๋์ฒดํ ์ ์์ด์ผ ํ๋ฉฐ, ์์ ํด๋์ค๊ฐ ๋ถ๋ชจ ํด๋์ค์ ํ์๋ฅผ ๋ณ๊ฒฝํ์ง ์์์ผ ํ๋ค๋ ์์น์ ๋๋ค. ์ด๋ฅผ ํตํด ์์ ๊ตฌ์กฐ์์ ์ผ๊ด์ฑ์ ์ ์งํ๊ณ ์์ธก ๊ฐ๋ฅํ ์ฝ๋ ๋์์ ๋ณด์ฅํ ์ ์์ต๋๋ค.
4. ์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น - ISP (Interface Segregation Principle)
- ํด๋ผ์ด์ธํธ๋ ์์ ์ด ์ฌ์ฉํ์ง ์๋ ๋ฉ์๋์ ์์กดํ์ง ์์์ผ ํ๋ค.
- ํ๋์ ํฐ ์ธํฐํ์ด์ค ๋์ ์ฌ๋ฌ ๊ฐ์ ์์ ์ธํฐํ์ด์ค๋ก ๋ถ๋ฆฌํ์ฌ, ์ฌ์ฉํ์ง ์๋ ๋ฉ์๋๋ฅผ ๊ตฌํํ์ง ์๋๋ก ํด์ผ ํ๋ค๋ ์์น์ ๋๋ค. ์ด๋ฅผ ํตํด ์ธํฐํ์ด์ค๋ ๋ ๋ช ํํ๊ณ , ํ์ํ์ง ์์ ๊ธฐ๋ฅ ๋๋ฌธ์ ์ฝ๋๊ฐ ๋ณต์กํด์ง๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
๋๋ฌผ ํ๋ ์ธํฐํ์ด์ค์ fly(), swim(), walk() ๋ฉ์๋๋ฅผ ๋ชจ๋ ํฌํจํ๊ธฐ๋ณด๋ค, ๊ฐ๊ฐ Flyable, Swimmable, Walkable ์ธํฐํ์ด์ค๋ก ๋๋ ์ ํ์ํ ํ๋๋ง ๊ตฌํํ๋๋ก ํ๋ ๊ฒ์ด ๋ ๋ฐ๋์งํฉ๋๋ค.
5. ์์กด ์ญ์ ์์น - DIP (Dependency Inversion Principle)
- ๊ณ ์์ค ๋ชจ๋์ ์ ์์ค ๋ชจ๋์ ์์กดํด์๋ ์ ๋๋ฉฐ, ๋ ๋ค ์ถ์ํ์ ์์กดํด์ผ ํ๋ค.
- ๊ตฌ์ฒด์ ์ธ ๊ตฌํ๋ณด๋ค ์ธํฐํ์ด์ค๋ ์ถ์ ํด๋์ค์ ์์กดํ๋๋ก ์ค๊ณํ์ฌ, ๋ชจ๋ ๊ฐ์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๋ ์์น์ ๋๋ค. ์ด๋ฅผ ํตํด ์ฝ๋ ๋ณ๊ฒฝ ์ ์๋ก ์ํฅ์ ์ฃผ์ง ์๊ณ ์ฝ๊ฒ ํ์ฅํ๊ฑฐ๋ ๊ต์ฒดํ ์ ์์ต๋๋ค.
์๋น์ค ํด๋์ค๊ฐ ์ง์ MySQLDatabase ํด๋์ค์ ์์กดํ๊ธฐ๋ณด๋ค, Database๋ผ๋ ์ถ์ ์ธํฐํ์ด์ค์ ์์กดํ๊ฒ ํจ์ผ๋ก์จ OracleDatabase๋ก ์ฝ๊ฒ ๊ต์ฒดํ ์ ์๊ฒ ์ค๊ณํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
'๐บ Develop > ๐จ Design Pattern' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋์์ธ ํจํด (0) | 2024.10.18 |
---|
๊ณต์ง์ฌํญ
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ
- Total
- Today
- Yesterday
๋งํฌ
TAG
- ๋์์ธํจํด ๋จ์
- git name
- ๋งฅ ์ฑ ์ถ์ฒ
- ๋์์ธํจํด ์ฅ๋จ์
- ๊ฐ์ฒด์งํฅ์ค๊ณ solid
- git user.gmail
- ๋์์ธํจํด ์ฅ์
- git gmail
- ๊ฐ์ฒด ์งํฅ ์ค๊ณ ์์น
- ๋งฅ๋ฆฐ์ด ์ฑ ์ถ์ฒ
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |
๊ธ ๋ณด๊ดํจ