OOP (3) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ [Design Pattern] Observer Pattern Observer Pattern ํจํด์ ๋ถ๋ฅ : ํ์ํจํด ํจํด์ ๋ชฉ์ : This pattern defines a one-to-many dependency between objects so that when one object changes state, all of its dependents are notified and updated automatically. – GoF – ํจํด์ ์ ์ฉ RSS Feed: ์น ์ฌ์ดํธ๋ค์ ์๋ก์ด ์ ๋ณด๊ฐ ๋ฐ์ํ๋ฉด ๊ด์ฌ์ ๊ฐ์ง๊ณ ์๋ ์ธก์๊ฒ ์๋ ํต๋ณดํ์ฌ ์ค Facebook๊ณผ ๊ฐ์ ๋ง์ SNS์ ๊ฒฝ์ฐ ์ฌ์ฉ์๊ฐ ๊ธ์ ๊ฒ์ํ๋ฉด ๊ทธ ๊ฒ์์์ ๋ชจ๋ follower์๊ฒ ์๋ ํต๋ณดํ์ฌ ์ค GUI ํ๋ก๊ทธ๋๋ฐ์์ ์ฌ๊ฑด ์์ค์ ์ฌ๊ฑด ๊ฒฝ์ฒญ์๋ฅผ ๋ฑ๋กํ์ฌ ์ฌ๊ฑด์ด ๋ฐ์ํ์์ ๋ ์ฒ๋ฆฌํ๋ค. ๋ณดํต ํ๋์.. [OOP] ๊ฐ์ฒด์งํฅ ์ค๊ณ ์๋ฆฌ ๊ฐ์ฒด์งํฅ ์ค๊ณ ์๋ฆฌ 1. SOLID SOLID๋ ๊ฐ์ฒด์งํฅ ์ค๊ณ ์๋ฆฌ ์ค ๊ฐ์ฅ ์ค์ํ ๋ค์ฏ๊ฐ์ง ์๋ฆฌ SRP(Single Responsibility Principle), OCP(Open-Closed Principle), LSP(LIskov Substitution Principle), ISP(Interface Substitution Principle), DIP(Dependency Inversion Principle)๋ฅผ ๋งํ๋ค. 1.1 SRP ๋จ์ผ ์ฑ ์ ์๋ฆฌ A class should have only one reason to change. ์ํํธ์จ์ด์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์ค๊ณ ์๋ฆฌ ์ค ํ๋๋ ๋ชจ๋์ ์์ง์ฑ์ด ๋์์ผ ํ๋ค๋ ๊ฒ์ด๋ค. (high-cohesion) ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์์ ๊ธฐ๋ณธ ๋ชจ๋์ ํด๋์ค์ด๋ค. SRP์.. [OOP]๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ 1. ์ญ์ฌ ๊ฐ์ฒด์งํฅ(OO, Object-Oriented) ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ ์ง๋ฐฐ์ ์ธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์๋ฆฌ์ก๊ธฐ ์ด์ ์ ๋๋ฆฌ ์ฌ์ฉ๋ ๊ณ ๊ธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ FORTRAN, COBOL ๋ฑ์ด๋ค. C ์ธ์ด๋ 1972๋ ์ Bell Labs์ Dennis Ritchie๊ฐ ๊ฐ ๋ฐํ ๋ฒ์ฉ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ด๋ค. C ํ์ค์ 1983๋ ์ ์์๋์ด 1988๋ ์ ์ฒ์์ผ๋ก ํ์คํ๋์์ผ๋ฉฐ, ์ด๋ฅผ ANSI C ๋๋ ISO C๋ผ ํ๋ค. ๊ทธ ์ดํ C99, C11์ผ๋ก ํ์ค์ด ์ผ๋ถ ๊ฐ์ ๋์๋ค. C ์ธ์ด๋ ์ด์์ฒด์ ๋ฅผ ๊ฐ๋ฐํ๊ธฐ ์ํด ๋ง๋ค์ด์ง ์ธ์ด๋ก ๊ณ ๊ธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ด์ง๋ง ํ๋์จ์ด์ ๋ฐ์ ํ ์์ค์ ์์๋ ํฌํจ๋์ด ์๋ค. ๋ํ ๋น์ ๊ณ ๊ธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ด์ฉํ์ฌ ๊ฐ๋ฐํ๋ ์์ฉ์ด ๋งค์ฐ ์ ํ์ ์ด์๋ค. ์ง๊ธ์ 4์ฐจ ์ฐ์ ํ๋ช , .. ์ด์ 1 ๋ค์