์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- 99ํด๋ฝ
- well known ํฌํธ
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- ํ๋ ์ ๊ตฌ์กฐ
- ํ ํฐ ๋ฒ์ค
- git merge
- tcp ํ๋กํ ์ฝ
- til
- i-type
- mariadb
- ์ค๋ ๋
- ํ๋ก์ด๋์์
- IEEE 802
- ์ฝ๋ฉํ ์คํธ์ค๋น
- ์ค๋ธ์
- tcp ์ธ๊ทธ๋จผํธ
- ๋ฐ์ดํฐ ์ ์ก
- xv6
- ์ค๋ฅ์ ์ด
- ์ค๋ฅ๊ฒ์ถ
- ํญํด99
- ์ฃผ๊ธฐ์ ํธ
- ์ฐ๋ถํฌdb
- ์์๋ฒํธ
- ์๋น์ค ํ๋ฆฌ๋ฏธํฐ๋ธ
- reducible
- ๊ฐ๋ฐ์์ทจ์
- ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ
- leetcode
- ๋น์ฃผ๊ธฐ์ ํธ
- Today
- Total
๋ชฉ๋กOOP(๊ฐ์ฒด์งํฅ์ค๊ณ) (2)
Unfazedโ๏ธ๐ฏ

1. ๊ฐ๋ฐฉ ํ์ ์์น(Open-Closed Principle)์ด๋?1988๋ Bertrand Meyer๊ฐ ๊ทธ์ ์ ์ "Object Oriented Software Construction"์์ ์ฒ์ ์๊ฐํ ์ด ์์น์ ๋ค์๊ณผ ๊ฐ์ด ์ ์๋๋ค. software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification."์ํํธ์จ์ด ์ํฐํฐ(ํด๋์ค, ๋ชจ๋, ํจ์ ๋ฑ)๋ ํ์ฅ์ ๋ํด์๋ ์ด๋ ค ์์ด์ผ ํ๊ณ , ์์ ์ ๋ํด์๋ ๋ซํ ์์ด์ผ ํ๋ค."ํ์ฅ์ ์ด๋ ค์๋ค(Open for extension): ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ ์์ด์ผ ํจ์์ ์ ๋ซํ์๋ค(Closed for modification): ๊ธฐ์กด..
SRP๋ SOLID ์์น ์ค ์ฒซ ๋ฒ์งธ ์์น์ผ๋ก, ํ ๊ฐ์ ๋ชจ๋์ ์ค์ง ํ ๊ฐ์ ์กํฐ์๋ง ์ฑ ์์ ๊ฐ์ ธ์ผ ํ๋ค๋ ์์น์ด๋ค. A module should be responsible to one, and only one, actor.(Actor : ๋ชจ๋์ ๋ณ๊ฒฝ์ ์๊ตฌํ๋ ํ๋ ์ด์์ ์ดํด๊ด๊ณ์๋ ์ฌ์ฉ์ ๊ทธ๋ฃน)SRP์์ ์ฑ ์์ ์๋ฏธ ์ผ๋ฐ์ ์ธ ๊ฐ์ฒด์งํฅ ์ค๊ณ์์์ ์ฑ ์(์ญํ , ์ฑ ์, ํ๋ ฅ์์์ ์ฑ ์)๊ฐ์ฒด๊ฐ ์ํํด์ผ ํ๋ ํ๋(behavior)์ ์๋ฏธ๊ฐ์ฒด๊ฐ "๋ฌด์์ ์๊ณ "(knowing) "๋ฌด์์ ํ๋์ง"(doing)๋ฅผ ๋ํ๋ํ๋ ฅ ๊ด๊ณ ์์์ ๊ฐ์ฒด๊ฐ ์ํํด์ผ ํ๋ ์ญํ ์ ์๋ฏธ์ฃผ๋ก ๋ฉ์๋๋ ๊ธฐ๋ฅ ๋จ์์ ์ฑ ์์ ์๋ฏธSRP์์์ ์ฑ ์๋ณ๊ฒฝ์ ์ด์ (reason for change)๋ฅผ ์๋ฏธํน์ ์กํฐ(์ดํด๊ด๊ณ์)์ ์๊ตฌ์ฌํญ์ ์๋ฏธ..