728x90
๐๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ด๋
- ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ปดํจํฐ ํ๋ก๊ทธ๋จ์ ๋ช ๋ น์ด์ ๋ชฉ๋ก์ผ๋ก ๋ณด๋ ์๊ฐ์์ ๋ฒ์ด๋ ์ฌ๋ฌ ๊ฐ์ ๋ ๋ฆฝ๋ ๋จ์, ์ฆ "๊ฐ์ฒด"๋ค์ ๋ชจ์์ผ๋ก ํ์ ํ๊ณ ์ ํ๋ ๊ฒ์ด๋ค. ๊ฐ๊ฐ์ ๊ฐ์ฒด๋ ๋ฉ์์ง ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ณ , ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ค.
- ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ํ๋ก๊ทธ๋จ์ ์ ์ฐํ๊ณ ๋ณ๊ฒฝ์ด ์ฉ์ดํ๊ฒ ๋ง๋ค๊ธฐ ๋๋ฌธ์ ๋๊ท๋ชจ ์ํ ํธ์จ์ด ๊ฐ๋ฐ์ ๋ง์ด ์ฌ์ฉ๋๋ค.
- ์ ์ฐํ๊ณ , ๋ณ๊ฒฝ์ด ์ฉ์ด ํ๋ค๋๊ฑด ์ปดํจํฐ ๋ถํ์ ๊ฐ์ ๋ผ์ฐ๋ฏ์ด ํ๋ก๊ทธ๋๋ฐ์ด ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ด๋ค.
๐๋คํ์ฑ์ด๋
- ๋คํ์ฑ์ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ํต์ฌ์ด๋ผ๊ณ ํ ์ ์๋ค.
- ๋คํ์ฑ์ ์ญํ ๊ณผ ๊ตฌํ์ผ๋ก ์ธ์์ ๊ตฌ๋ถํ๋ค.(EX:์ด์ ์ -์๋์ฐจ,๊ณต์ฐ ๋ฌด๋)
- ์ญํ ๊ณผ ๊ตฌํ์ผ๋ก ๊ตฌ๋ถํ๋ฉด ๋จ์ํด์ง๊ณ , ์ ์ฐํด์ง๋ฉฐ ๋ณ๊ฒฝ๋ ํธ๋ฆฌํด์ง๋ค.
- ๋คํ์ฑ์ผ๋ก ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ๊ฐ์ฒด ๋ฅผ ์คํ ์์ ์ ์ ์ฐํ๊ฒ ๋ณ๊ฒฝํ ์ ์๋ค.
- ์ค๋ฒ๋ผ์ด๋ฉ ๋ ๋ฉ์๋๊ฐ ์คํ๋๋ค.
๐์ญํ ๊ณผ ๊ตฌํ์ ๋ถ๋ฆฌํ๋ฉด ์ฅ์
- ํด๋ผ์ด์ธํธ๋ ๋์์ ์ญํ (interface)๋ง ์๋ฉด ๋๋ค.
- ํด๋ผ์ด์ธํธ๋ ๊ตฌํ ๋์์ ๋ด๋ถ ๊ตฌ์กฐ๋ฅผ ๋ชฐ๋ผ๋ ๋๋ค.
- ํด๋ผ์ด์ธํธ๋ ๊ตฌํ ๋์์ ๋ด๋ถ๊ตฌ์กฐ๊ฐ ๋ณ๊ฒฝ๋์ด๋ ์ํฅ์ ๋ฐ์ง ์๋๋ค.
- ํด๋ผ์ด์ธํธ๋ ๊ตฌํ ๋์ ์์ฒด๋ฅผ ๋ณ๊ฒฝํด๋ ์ํฅ์ ๋ฐ์ง ์๋๋ค.
- ์๋ฐ์์๋ ๋คํ์ฑ์ ํ์ฉํ๋ค. => ์ญํ : ์ธํฐํ์ด์ค(interface), ๊ตฌํ: ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ํด๋์ค( class),๊ตฌํ ๊ฐ์ฒด
+@ ์๋ฐ์์ ์ค๊ณํ ๋ ์ญํ ๊ณผ ๊ตฌํ์ ๋ช ํํ ๋ถ๋ฆฌ
+@๊ฐ์ฒด ์ค๊ณ์ ์ญํ (์ธํฐํ์ด์ค)์ ๋จผ์ ๋ถ์ฌํ๊ณ , ๊ทธ ์ญํ ์ ์ํํ๋ ๊ตฌํ ๊ฐ์ฒด ๋ง๋ค๊ธฐ
๐ป์ข์ ๊ฐ์ฒด ์งํฅ ์ค๊ณ์ 5๊ฐ์ง ์์น ๐ป
SOLID =>ํด๋ฆฐ์ฝ๋๋ก ์ ๋ช ํ ๋ก๋ฒํธ ๋งํด์ด ์ข์ ๊ฐ์ฒด ์งํฅ ์ค๊ณ์ 5๊ฐ์ง ์์น์ ์ ๋ฆฌ
- SRP: ๋จ์ผ ์ฑ ์ ์์น(single responsibility principle) : ํ ํด๋์ค๋ ํ๋์ ์ฑ ์๋ง ๊ฐ์ ธ์ผ ํ๋ค.
- OCP: ๊ฐ๋ฐฉ-ํ์ ์์น (Open/closed principle) : ์ํํธ์จ์ด ์์๋ ํ์ฅ์๋ ์ด๋ ค ์์ผ๋ ๋ณ๊ฒฝ์๋ ๋ซํ ์์ด์ผ ํ๋ค.
- LSP: ๋ฆฌ์ค์ฝํ ์นํ ์์น (Liskov substitution principle): ํ๋ก๊ทธ๋จ์ ๊ฐ์ฒด๋ ํ๋ก๊ทธ๋จ์ ์ ํ์ฑ์ ๊นจํธ๋ฆฌ์ง ์์ผ๋ฉด์ ํ์ ํ์ ์ ์ธ์คํด์ค๋ก ๋ฐ๊ฟ์ ์์ด์ผํ๋ค
- ISP: ์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น (Interface segregation principle): ํน์ ํด๋ผ์ด์ธํธ๋ฅผ ์ํ ์ธํฐํ์ด์ค ์ฌ๋ฌ๊ฐ๊ฐ ๋ฒ์ฉ ์ธํฐํ์ด์ค ํ๋๋ณด๋ค ๋ซ๋ค.
- DIP: ์์กด๊ด๊ณ ์ญ์ ์์น (Dependency inversion principle) : ์ถ์ํ์ ์์กดํด์ผ์ง,๊ตฌ์ฒดํ์ ์์กดํ๋ฉด ์๋๋ค.
728x90
'Dev' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
DataBase Engine(๋ฐ์ดํฐ ๋ฒ ์ด์ค ์์ง) (0) | 2021.09.28 |
---|---|
ํ๋ก์(Proxy)๋ (0) | 2021.07.26 |
[CS]ํ๋ก์ธ์ค(Process)๋? (0) | 2021.06.13 |
[Network]URL,URI,URN์ ์ ์ (0) | 2021.04.13 |
IntelliJ ๋จ์ถํค(MAC) (0) | 2021.03.11 |