๐ SOLID ์ ๋ฆฌ ๐
๊ฐ์ฒด์งํฅ ์ค๊ณ์์ ์ง์ผ์ค์ผ ํ 5๊ฐ์ ์ํํธ์จ์ด ๊ฐ๋ฐ ์์น
์ฝ๋ ํ์ฅ, ์ ์ง ๋ณด์ ๊ด๋ฆฌ๊ฐ ์ฌ์์ง๋ค.
๋, ๋ณต์ก์ฑ์ ์ ๊ฑฐํด ๋ฆฌํฉํ ๋ง์ ์์๋๋ ์๊ฐ์ ์ค์์ผ๋ก์จ ๊ฐ๋ฐ์ ์์ฐ์ฑ์ ๋์ธ๋ค.
ํ๋ก๊ทธ๋จ์ ์ ์ง๋ณด์์ฑ์ ๋์ด๊ธฐ ์ํ ์ค๊ณ ๊ธฐ๋ฒ
์ปดํจํฐ ํด๋์ค๋ ์ปดํจํฐ์ ๊ธฐ๋ฅ๋ง ๊ตฌํํ๋ค.
์ปดํจํฐ๊ฐ ์ฒญ์๋ฅผ ํ๊ฑฐ๋ ์ค๊ฑฐ์ง๋ฅผ ํ ์ฑ
์์ด ์๋ค.
์ฆ, ์ปดํจํฐ๋ ์ปดํจํฐ์ ๊ธฐ๋ฅ๋ง ์ ํ๋ฉด ๋๋ ์ฑ
์๋ง ๊ฐ์ง๋ฉด ๋๋ค.
ํ์ฅ์ ์ด๋ ค์์ด์ผ ํ๋ฉฐ, ์์ ์๋ ๋ซํ์์ด์ผ ํ๋ค๋ ์์น
๋ถ๋ชจ ํด๋์ค) Animal - ์์ ํด๋์ค) Dog, Cat์ด ์์ ๋
์๋ก์ด ํด๋์ค Duck์ ์ถ๊ฐํ ๊ฒฝ์ฐ ๊ธฐ์กด Animal์ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ Duck ํด๋์ค๋ฅผ ๊ตฌํํ ์ ์๋ค.
๋คํ์ฑ ์๋ฆฌ๋ฅผ ์ด์ฉํ๊ธฐ ์ํ ์์น ๊ฐ๋
์๊ธฐ์น ๋ชปํ ๋ฌธ์ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ด ์์ด ๋ถ๋ชจ ๋ฉ์๋์ ์ค๋ฒ๋ผ์ด๋ฉ์ ๋ฐ์ ธ๊ฐ๋ฉฐ ํด์ผํ๋ค.
Father ์๋ค = new Son(); โ ๋ถ๊ฐ๋ฅ, ์๋ค์ ์๋น ๊ฐ ๋ ์ ์๋ค.
Father ๋ธ = new Daughter(); โ ๋ถ๊ฐ๋ฅ, ๋ธ์ ์๋น ๊ฐ ๋ ์ ์๋ค.
Animal ๋ฝ๋ก๋ก = new Penguin() โ ๊ฐ๋ฅ, ๋ฝ๋ก๋ก๋ ํญ๊ท์ด์ ๋๋ฌผ์ด๋ค.
์ธํฐํ์ด์ค์ ๋จ์ผ ์ฑ ์ ๊ฐ์กฐ
Object๋ผ๋ ์ธํฐํ์ด์ค๋ฅผ Car, Bird ํด๋์ค๊ฐ ๊ตฌํํ ๋, Car์์๋ drive, speed์ ๊ฐ์ด ์๋์ฐจ์ ๊ด๋ จ๋ ๊ธฐ๋ฅ์,
Bird์์๋ Fly, Step๊ณผ ๊ฐ์ด ์์ ๊ด๋ จ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ฒ ๋๋ค.
์ด๋ Car์ Fly, Step์ ๊ฐ์ด ์์ ๊ธฐ๋ฅ์ ๊ตฌํํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์๊ธฐ๋ฉฐ,
Bird์์๋ ๋ฐ๋์ ๊ฒฝ์ฐ๊ฐ ์๊ธฐ๊ฒ ๋๋ฉด์ ํด๋์ค ๋ชฉ์ ์ ๋ง์ง ์๋ ๋ฉ์๋๋ก ์ธํด ์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น์ ์๋ฐํ๋ค.
๋ฐ๋ผ์ ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ISP๋ฅผ ์ ์ฉํด ๊ฐ๊ฐ Car์ Bird ์ธํฐํ์ด์ค๋ฅผ ๊ตฌ๋ถํ์ฌ ๊ตฌํํ๋ค.
์์ ์ธํฐํ์ด์ค ํ์ ์ ๊ฐ์ฒด๋ก ํต์ ํ๋ผ๋ ์์น
๊ฒ์์์ ์บ๋ฆญํฐ๊ฐ ์์๋, ์บ๋ฆญํฐ๋ ๋ฌด๊ธฐ๋ฅผ ๊ฐ์ง๋ค.
์ด๋ ์ด ๋ฌด๊ธฐ๋ ์ฌ๋ฌ ์ข
๋ฅ(์นผ, ์ด, ๋ฐฉ๋ง์ด ๋ฑ)๋ฅผ ๊ฐ์ง๋ค.
์บ๋ฆญํฐ๋ ์ฌ๋ฌ ๊ฐ์ ๋ฌด๊ธฐ๋ฅผ ๊ฐ์ง ์ ์์ผ๋ฉฐ, ๋ฌด๊ธฐ ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํด์ผ ํ๋ค.
๋ฐ๋ผ์ ๋ชจ๋ ๋ฌด๊ธฐ๋ฅผ ํฌํจํ๋ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค๊ณ , ์ด ์ธํฐํ์ด์ค๋ฅผ ๋ฌด๊ธฐ์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ๊ตฌํํจ์ผ๋ก์จ
๋ฌด๊ธฐ๊ฐ ์บ๋ฆญํฐ์ ์์กดํ๋ ๊ฒ์ด ์๋๋ผ ๋ชจ๋ ๋ฌด๊ธฐ๋ฅผ ํฌํจํ๋ ์ธํฐํ์ด์ค์ ์์กดํ๊ฒ ๋๋ค.
์ด๋ก์จ ์์กด์ฑ ์ญ์ ์์น์ ์งํฌ ์ ์๋ค.