Template Method
Template Method ํจํด์ ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฒด์ ์ธ ๋ผ๋๋ฅผ ์ถ์ ํด๋์ค์ ์ ์ํด๋๊ณ , ๊ทธ ์ค ์ผ๋ถ ๊ตฌ์ฒด์ ์ธ ๋จ๊ณ๋ ์๋ธํด๋์ค์์ ๊ตฌํํ๋๋ก ์์ํ๋ ๋์์ธ ํจํด์ ๋๋ค.
์ฆ, ์๊ณ ๋ฆฌ์ฆ์ ๊ณตํต ๋ถ๋ถ์ ๋ถ๋ชจ ํด๋์ค์์ ์ฒ๋ฆฌํ๊ณ , ๋ณํ๋ ๋ถ๋ถ์ ์์ ํด๋์ค์์ ๊ตฌํํ์ฌ ์ฝ๋์ ์ค๋ณต์ ์ค์ด๊ณ , ์๊ณ ๋ฆฌ์ฆ์ ์ผ๊ด์ฑ์ ์ ์งํ ์ ์์ต๋๋ค.
How do Code?
ํ ํ๋ฆฟ ๋ฉ์๋(templateMethod()) ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฒด ํ๋ฆ์ ์ ์ํฉ๋๋ค. ํ ํ๋ฆฟ ๋ฉ์๋ ๋ด์์ ๊ณตํต์ผ๋ก ์ํํด์ผ ํ๋ ๋จ๊ณ์, ์๋ธํด๋์ค์์ ๊ฐ๊ฐ ๋ค๋ฅด๊ฒ ๊ตฌํํด์ผ ํ๋ ์ถ์ ๋ฉ์๋๋ฅผ ํธ์ถํฉ๋๋ค.
primitiveOperation1()์ primitiveOperation2() ์๋ธํด๋์ค์์ ๊ตฌ์ฒด์ ์ผ๋ก ๊ตฌํํ ๋ฉ์๋์ ๋๋ค. ์ด ๋ฉ์๋๋ค์ด ์๊ณ ๋ฆฌ์ฆ์ ๋ณ๊ฒฝ ๊ฐ๋ฅํ ๋ถ๋ถ์ ๋ด๋นํฉ๋๋ค.
concreteOperation() ์๊ณ ๋ฆฌ์ฆ์์ ๋ณ๊ฒฝ๋์ง ์๊ณ ๊ณตํต์ผ๋ก ์ํ๋๋ ์์ ์ผ๋ก, ๋ณดํต private ๋ฉ์๋๋ก ์ ์๋์ด ์๋ธํด๋์ค์์ ์ค๋ฒ๋ผ์ด๋ฉํ์ง ์์ต๋๋ค.
์ฅ์ ์๊ณ ๋ฆฌ์ฆ์ ๊ณตํต ๋ถ๋ถ๊ณผ ๋ณํํ๋ ๋ถ๋ถ์ ๋ถ๋ฆฌํจ์ผ๋ก์จ ์ฝ๋ ์ฌ์ฌ์ฉ์ฑ์ ๋์ด๊ณ , ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌ์กฐ๋ฅผ ์ผ์ ํ๊ฒ ์ ์งํ ์ ์์ต๋๋ค.
Last updated