๐ Knowledge/๊ฐ์ฒด์งํฅ์ค๊ณ
Spring์์ DB์ ์ฟผ๋ฆฌ๋ฅผ ๋ ๋ฆฌ๊ธฐ ์ํด์ _jdbcTemplate_์ ์ฌ์ฉํ๊ณค ํ๋ค. ๋๊ตฐ๊ฐ๊ฐ ์ฟผ๋ฆฌ ํธํ๊ฒ ์์ฑํ๋ผ๊ณ ๋ง๋ค์๊ตฌ๋ ์ ๋๋ก ์๊ฐํ์๋ค. ํ์ง๋ง, ๊ณต๋ถ๋ฅผ ํ๋ค๋ณด๋ ์ด ์ด๋ฆ์๋ ์ ๋ง ํฌ๋ํฐ ์๋ฏธ๊ฐ ์๋ค๋ ๊ฒ์ ์๊ฒ ๋์๊ณ ๊ทธ ๊ตฌ์กฐ์ ๋ ํ๋ฒ ๊ฐํํ๊ฒ ๋์๋ค. ์ด์ ๋ถํฐ, _jdbcTemplate_๋ผ๋ ๊ฐ์ฒด ์งํฅ์ ์ผ๋ก DB์ ์ ๊ทผํ ์ ์๋ API๊ฐ ์ด๋ป๊ฒ ๋ง๋ค์ด์ก๋์ง ์ ๋ฆฌํด๋ณด๊ณ ์ ํ๋ค. ๊ทธ์ ์ ์์์ผ ํ๋ ๊ฐ๋
์ธ ์์ง๋์ ๊ฒฐํฉ๋์ ๋ํด ๋จผ์ ์ดํด๋ณด์. ๋์ ์์ง๋(high cohesion) ๋์ ์์ง๋๋ ํ๋์ ๋ชจ๋, ํด๋์ค๊ฐ ํ๋์ ์ฑ
์, ๊ด์ฌ์ฌ์ ์ง์ค๋์ด ์๋ค๋ ๊ฒ์ด๋ค. ๊ทธ ์ธ์ ๊ด๋ จ ์๋ ์ฑ
์์ ์ฝํ์์ง ์๋ค. ์ด๋ ํด๋์ค ๋ ๋ฒจ ๋ฟ๋ง์ด ์๋๋ผ ํจํค์ง๋ ์ปดํฌ๋ํธ ๋ฑ์ ์์ญ์์๋ ๋ง์ฐฌ๊ฐ์ง๋ก ..
๐ Knowledge/๊ฐ์ฒด์งํฅ์ค๊ณ
ํด๋์ค์ ๊ฐ์ฒด ํํ๋ค ๋ถ์ด๋นต๊ณผ ๋ถ์ด๋นต ํ, ์ค๊ณ๋์ ๊ฑด๋ฌผ๊ณผ ๊ฐ์ ์์ผ๋ก ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ์ค๋ช
ํด์๋ค. ๋ ์ญ์ ๋น์ทํ ์์ค์ผ๋ก ํด๋์ค์ ์ ๊ฐ์ฒด์ ๋ํด ์ดํดํ๊ณ ์์ ๋ฟ์ด์๋ค. ๋ค๋ง, ๊ทธ๋ฌํ ์์ค์ผ๋ก ํด๋์ค์ ๊ฐ์ฒด์ ๊ด๊ณ์ ๊ทธ ์์ฒด๋ฅผ ์ดํดํ๋ ๊ฒ์ ์ ํํ์ง ๋ชปํ๋ค. ํด๋์ค์ ์ฑ
์์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ , ์ ์ ํ ๋์ ํ๊ดดํ๋ ๊ฒ์ด๋ค. ๋ํ ํด๋์ค์ ์์๋ค์ด ์ด๋ค ๋ชจ์ต์ด๋ฉฐ ์ด๋ค ํ๋์ ํด์ผ ํ๋ ์ง ์ ์ด๋์ "๊ณ์ฝ"์ ๋ํด์ ์๊ณ ์๋ค. ๊ฐ์ฒด๋ ๊ณ์ฝ์ ๋ํ ์๊ฒฉ์ ๊ฐ์ถ๊ธฐ ์ํด ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํจ์ผ๋ก์จ ์ด๋ฅผ ์ค์ํ๊ฒ ๋๋ค. ๋ฌผ๋ก ์ธํฐํ์ด์ค๋ ์ถ์ํ๋ฅผ ํตํด ๋คํ์ฑ์ด ๋ณด์ฅ๋ ๋ค๋ ์ ์์๋ ์๋ฏธ๊ฐ ์๊ธดํ๋ค. ๊ฐ์ฒด๋ ์๋ช
์ฒด์ด๋ค. ์ฌ๋ฐ๋ฅธ ๊ฐ์ฒด๋ ๊ทธ ์์ฒด๋ก ์๋ช
์ฒด์ด๋ค. ํ์ค ์ธ๊ณ์ ํผ์กฐ๋ฌผ์ ๋๋ฆฌ์ ๊ทธ ์์ฒด์ด๋ฉฐ, ์๋ช
์ฃผ๊ธฐ์ ํ..
๐ Knowledge/๊ฐ์ฒด์งํฅ์ค๊ณ
๊ฐ์ฒด์งํฅ ์ํ ์ฒด์กฐ 9์์น '์ํธ์
์ค ์ค์๋ฌ์ง'๋ผ๋ ์ฑ
์์๋ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ๋ณด๋ค ์ ํ๊ธฐ ์ํด์ 9๊ฐ์ง ์์น์ ์ ์ํ๋ค. ์ง๊ธ๊น์ง ๊ณต๋ถํ๊ณ , ์ง์ ์ฌ์ฉํด๋ณธ ๊ฒฝํ์ ๋ฐํ์ผ๋ก ๊ฐ ๊ท์น์ ์ ์จ์ผ ํ๊ณ ๋ฌด์์ด ์ข์ ์ง ์์ฑํด๋ณด๊ณ ์ ํ๋ค. ๊ท์น 1. ํ ๋ฉ์๋์ ํ ๋จ๊ณ์ ๋ค์ฌ์ฐ๊ธฐ(indent)๋ง ํ๋ค. ์ง๊ธ๊น์ง ์ฝ๋ฉํ
์คํธ๋ฅผ ํฌํจํ์ฌ ์ฝ๋๋ฅผ ์งค ๋, ๋ค์ฌ์ฐ๊ธฐ ๋ฐ์ ์ ๊ฒฝ์ฐ์ง ์์๋ค. ๋จ์ด ๋ณผ ์ฝ๋๋ผ๊ณ ๋ ์ ํ ์๊ฐํ์ง ์์์์๋ค. ํ์ง๋ง, ํ์
์ ํผ์์ ํ๋ ๊ฒ์ด ์๋๋ค. ๋๊ฐ ๋ณด์๋ ์์๋ณผ ์ ์๋ ์ฝ๋์ฌ์ผ ์ ์ง๋ณด์ ์ธก๋ฉด์์ ์ด์ ์ด ํฌ๋ค. ๊น์ ๋ค์ฌ์ฐ๊ธฐ๋ ๊ฐ๋
์ฑ์ ์ข์ง ๋ชปํ๊ฒ ๋ง๋ค๊ธฐ ๋๋ฌธ์ ๊ฐ๊ธ์ ์ด๋ฉด ์ค์ด๋ ๊ฒ์ด ์ข๋ค. ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ์ค์ด๋ ๊ฒ์ ๊ฐ๋
์ฑ ๋ฟ๋ง์ด ์๋๋ผ, ์ฌ์ฌ์ฉ์ฑ๊ณผ ๋๋ฒ๊น
์ ์์ด์๋ ์ ๋ฆฌํ๋ค. ..
๐ Knowledge/๊ฐ์ฒด์งํฅ์ค๊ณ
Prototype Pattern(ํ๋กํ ํ์
) ํ๋กํ ํ์
์ ์์ฑ ํจํด์ ์ผ์ข
์ผ๋ก ๊ฐ์ฒด์ ๋ณต์ฌ๋ฅผ ์ํ ํจํด์ด๋ค. ๊ธฐ์กด์๋ ๊ฐ์ฒด๋ฅผ ๋ณต์ฌํ๊ธฐ ์ํด ๊ทธ ํ๋กํผํฐ๋ค์ ๋ชจ๋ ๋ณต์ฌํ์ฌ, ์๋กญ๊ฒ ๊ฐ์ฒด๋ฅผ ๊ตฌ์ฑํ์ฌ์ผ ํ๋ค. ์ด๋ฌํ ๋ฐฉ์์ ์ฝ๋๋ก ํ๋ํ๋ ์ง๊ธฐ์ ๊ท์ฐฎ๋ค. ๋ํ ํด๋์ค ๋ด๋ถ์ Private๋ก ์ ์ธ๋ ํ๋กํผํฐ๋ค์ด ์๋ค๋ฉด ์๋ฒฝํ๊ฒ ๋ณต์ฌํด๋ผ ์ ์๋ค. ํ๋กํ ํ์
ํจํด์ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ณต์ฌ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ฒด๋ค์๊ฒ ์์ํ๋ค. ์ฆ, ๋ชจ๋ ๊ฐ์ฒด๋ค์ด ๊ณตํต์ ์ผ๋ก ๊ฐ์ง๊ณ ์๋ "clone" ๋ฉ์๋๋ฅผ ๋ง๋๋ ๊ฒ์ด๋ค. ๋ชจ๋ ๊ฐ์ฒด๋ค์ด clone ๋ฉ์๋๋ฅผ ๊ฐ์ง๊ฒ ๋๋ค๋ฉด, ๊ฐ ๊ฐ์ฒด์ private ๋ฉค๋ฒ์ ์ ๊ทผํ ์ ์๊ฒ๋๋ค. ์ด ๋ง์ด ์๋ฏธํ ๊ฒ์ ๊ณง, ์๋ฒฝํ๊ฒ ํด๋น ๊ฐ์ฒด์์ ์๋ก์ด ๊ฐ์ฒด๋ก ๋ณต์ฌ๊ฐ ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ด๋ค. ์ด๋ ๊ฒ ๋ณต..
๐ Knowledge/๊ฐ์ฒด์งํฅ์ค๊ณ
๋์์ธ ํจํด์ ๋ฌด์์ธ๊ฐ? ๋์์ธ ํจํด์ ์ํํธ์จ์ด ์ค๊ณ์ ์์ด ๊ณตํต๋ ๋ฌธ์ ๋ค์ ๋ํ ํ์ค์ ์ธ ํด๋ฒ๊ณผ ์๋ช
๋ฒ์ ์ ์ํ ์ฑ
์ด๋ค. ์ด ๋ถ์ผ์ ์์ด, ์ฌ์ธ๋ฐฉ์ด๋ผ๊ณ ๋ถ๋ฆฌ๋ Erich Gamma, Richard Helm, Ralph Jonhson, John Vlissides๊ฐ ์์ฑํ๊ธฐ์ Gang of Four(GoF)๋ผ๊ณ ๋ถ๋ฆฌ๊ณค ํ๋ค. ์ฆ, ๋์์ธ ํจํด์ ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ๋ ๊ณผ์ ์์ ์ฐ๋ฆฌ ์์ ๋์ฌ์ง ๋น์ทํ ๋ฌธ์ ๋ค์ ํด๊ฒฐํ๊ธฐ ์ํด ์ผ๋ จ์ "ํจํด"์ ๋ง๋ค์ด ์ฝ๊ฒ ํด๊ฒฐํ ์ ์๋๋ก ํ ๊ฒ์ด๋ค. ์ด๋ฅผ ์ ์์งํ๊ณ ํ์ฉํ๋ค๋ฉด ๋ง์ ์๊ฐ๊ณผ ๋
ธ๋ ฅ์ ์ค์ผ ์ ์์ ๊ฒ์ด๋ค. ๊ทธ๋ฌํ ํจํด์ ํฌ๊ฒ ์ฉ๋์ ๋ฐ๋ผ ์์ฑ ํจํด(Creational Patterns), ๊ตฌ์กฐ ํจํด(Structural Patterns), ํ๋ ํจํด(Behavio..
๐ Knowledge/๊ฐ์ฒด์งํฅ์ค๊ณ
C++์์์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น LHS์ RHS LHS๋ left-hand-side expression, RHS๋ right-hand-side expression์ด๋ค. ๊ตณ์ด ์ด๋ ต๊ฒ ์๊ฐํ์ง ์๊ณ , ํํ์์์ ์ผ์ชฝ์ ํ ๋น๋ฐ๋ ์ฃผ์ฒด๋ฅผ LHS๋ผ๊ณ ํ๊ณ , ํ ๋นํ๋ ๋์์ RHS๋ผ๊ณ ํ๋ค. z = x+y๋ผ๋ ์์ด ์๋ค๋ฉด, LHS๋ z๋ผ๊ณ ํ๊ณ , x+y๋ RHS๋ผ๊ณ ํ๋ค. C++์์์ ๋ฉ๋ชจ๋ฆฌ ๋ชจ๋ธ &x (RHS์์๋ง ์ฌ์ฉ) ๋ณ์ x์ ์ฃผ์๋ฅผ ๋ฆฌํดํ๋ค. x (RHS์ ๊ฒฝ์ฐ) ๋ณ์์ ์ฃผ์์ ํ ๋น๋ ๊ฐ์ ๋ฆฌํดํ๋ค. x (LHS์ ๊ฒฝ์ฐ) ๋ณ์์ ์ฃผ์์ RHS ๊ฐ์ ์ ์ฅํ๋ค. *x (RHS์ ๊ฒฝ์ฐ) ๋ณ์์ ๊ฐ์ด ๊ฐ๋ฆฌํค๋ ์ฃผ์์ ๊ฐ์ ๋ฆฌํดํ๋ค. *x (LHS์ ๊ฒฝ์ฐ) ๋ณ์์ ๊ฐ์ด ๊ฐ๋ฆฌํค๋ ์ฃผ์์ RHS ๊ฐ์ ์ ์ฅํ๋ค. const ํค..
๐ Knowledge/๊ฐ์ฒด์งํฅ์ค๊ณ
ํ๋ก๊ทธ๋๋ฐ์ ์ธ๊ณ์์ ๊ฐ์ฒด ์งํฅ ์ค๊ณ๋ ๋ณต์กํ ๋ฌธ์ ๋ฅผ ๋
ผ๋ฆฌ์ ์ด๊ณ ํจ์จ์ ์ผ๋ก ํด๊ฒฐํ๋๋ฐ ๋์์ ์ฃผ๋ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์ ์ค ํ๋์ด๋ค. ์ด์ ๋ถํฐ, c++ ์ธ์ด๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด ์งํฅ ์ค๊ณ์ ๋ํด ๊ณต๋ถํด ๋ณด๊ณ ์ ํ๋ค. c++์ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ง์ํ๋ ๊ฐ๋ ฅํ ์ธ์ด๋ก, ํด๋์ค, ๊ฐ์ฒด, ์์, ๋คํ์ฑ, ์บก์ํ์ ๊ฐ์ ๊ฐ๋
์ ํจ๊ณผ์ ์ผ๋ก ๊ตฌํํ ์ ์๋๋ก ํ๋ค. ๋ฌผ๋ก , c++์ ๊ณต๋ถํ๋๋ฐ ์์ด์๋ ๊ต์ฅํ ๋์์ด ๋ ๊ฒ์ด๋ค. OOP์ ๋ํ์ฌ OOP๋ ๊ฐ์ฒด ์งํฅ ์ค๊ณ์ ์์ด ๋นผ๋์ ์ ์๋ ๊ฐ๋
์ด๋ค. ๋ฌด์กฐ๊ฑด ๋จธ๋ฆฌ์ ์ง์ด๋ฃ๋๋ก ํ์. Class and Object(ํด๋์ค, ๊ฐ์ฒด) Abstraction(์ถ์ํ) Encapsulation(์บก์ํ) Inheritance(์์) Polymorphism(๋คํ์ฑ) Class a..