Replace Conditional With Polymorphism, ์กฐ๊ฑด๋ถ ๋ก์ง์ ๋คํ์ฑ์ผ๋ก ๋ฐ๊พธ๊ธฐ๋ฅผ ์์๋ณด์.
์์ฝ
์ฝ๋
๋ฐฐ๊ฒฝ
- ์กฐ๊ฑด๋ถ ๋ก์ง์ ํ๋ก๊ทธ๋จ์ ์ฝ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋ ๋ค.
- ์ด๋ป๊ฒ ํ๋ฉด ์ง๊ด์ ์ผ๋ก ๊ตฌ์กฐํํ ์ ์์๊น?
- ๋ ๋์ ์์ค์ ๊ฐ๋
์ ๋์
ํ๋ฉด ์ด๋ฅผ ๋ถ๋ฆฌ์ํฌ ์ ์๋ค.
- ํด๋์ค์ ๋คํ์ฑ์ด๋ค.
- ๊ฐ ํ์
์ด ์์ ๋ง์ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌํ๋๋ก ๊ตฌํํ๋ฉด ์ข๊ฒ ๋ค.
์ ์ฐจ
- ๋คํ์ ๋์์ ํํํ๋ ํด๋์ค๋ค์ด ์๋ค๋ฉด ํ๋ ๋ง๋ ๋ค. ๊ธฐ์์ด๋ฉด ์ธ์คํด์ค๋ฅผ ์์์ ๋ง๋ค์ด ๋ฐํํ๋ ํฉํ ๋ฆฌ ํจ์๋ ํจ๊ป ๋ง๋ ๋ค. (์ฌ์ฉํ๋์ชฝ์์ ์ด๊ฒ ๋ ํธํ๋ค.)
- ํธ์ถํ๋ ์ชฝ์์ ํฉํ ๋ฆฌ ํจ์๋ฅผ ์ฌ์ฉํ๋๋ก ์์ ํ๋ค.
- ์กฐ๊ฑด๋ถ ๋ก์ง์ ์ผ๋จ ์ํผ ํด๋์ค๋ก ์ฎ๊ธด๋ค.
- ์๋ธ ํด๋์ค ์ค ํ๋๋ฅผ ์ ํํ๋ค. ์กฐ๊ฑด๋ถ ๋ก์ง ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ ํ๋ค.
- ๊ฐ์ ๋ฐฉ์์ผ๋ก ๋ค๋ฅธ ์๋ธ ํด๋์ค์๋ ์ ์ฉํ๋ค.
- ์ํผ ํด๋์ค์๋ ๊ธฐ๋ณธ ๋์๋ง ๋จ๊ธด๋ค.
์์
- ์์ ์ข
์ ๋ฐ๋ฅธ ๋นํ ์๋์ ๊นํธ ์ํ๋ฅผ ๋ฐํํ๋ ํจ์์ด๋ค.
- ์ ์ข
๋ฅ์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ๋์ํ๋ ํจ์๊ฐ ๋ช ๊ฐ ๋ณด์ธ๋ค.
- ์ผ๋จ ์ํผ ํด๋์ค๋ฅผ ๋ง๋ค์๊ณ , ๊ทธ ์์ ์๋ธํด๋์ค๋ฅผ ๋ง๋ค์.
- ์ ํฉํ ๋ฆฌ ํจ์๋ ์ถ๊ฐํด์ฃผ์.
- ํฉํ ๋ฆฌ ํจ์๋ฅผ ํ๋ ๋ง๋ค์๊ณ , ์ด๊ฑธ ํธ์ถํ๋๋ก ๋ณ๊ฒฝํ๋ค.
- ๊ทธ๋ฆฌ๊ณ ์๋ธ ํด๋์ค๋ค์ ์ผ๋จ ๋ง๋ค์ด๋ดค๋ค.
- ๋ก์ง์ด ๋ถ๋ฆฌ๋์ง๋ ์์์ผ๋ ์ด๊ฑธ ์ฒ๋ฆฌํด๋ณด์.
Reference