๐ ํ๋ก๊ทธ๋๋ฐ

๊ณ์ธตํ ์ํคํ ์ฒ (Layered Architecture)
๐ 1. ๊ฐ๋ ๊ณ์ธตํ ์ํคํ ์ฒ(Layered Architecture)๋ ๊ด์ฌ์ฌ์ ๋ถ๋ฆฌ(Separation of concerns)์ ๋ฐ๋ผ ์์คํ ์ ์ ์ฌํ ์ฑ ์(๊ด์ฌ)์ ์ง๋ Layer๋ก ๋ถํดํ๊ณ , ๊ฐ๊ฐ์ Layer๊ฐ ํ์ Layer์๋ง ์์กดํ๋๋ก ๊ตฌ์ฑํ๋ ์ํคํ ์ฒ ํจํด์ด๋ค. ๐ 2. ์ฌ์ฉ ๋ชฉ์ Layered Architecture๋ฅผ ์ด์ฉํ์ฌ ๊ฐ ๋ ์ด์ด๋ค์ด ํน์ ๊ด์ฌ์ฌ์ ๊ด๋ จ๋ ๊ฐ์ฒด๋ง์ ํฌํจํ๋๋ก ๋ง๋ ๋ค. ์ด๋ฅผ ํ์ฉํ Layered Architecture์ ํตํด ๋ค์๊ณผ ๊ฐ์ ๋ชฉ์ ์ ์ด๋ฃฐ ์ ์๋ค. ์ ์ฒด์ ์ธ ์์คํ ์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๋ค. ํ์ ๊ณ์ธต์ ์ธํฐํ์ด์ค๋ฅผ ํตํด ์ ๊ทผํจ์ผ๋ก์จ ํด๋น ๊ณ์ธต์ ๋ณ๊ฒฝ ์ฌํญ์ ์ต์ํํ ์ ์๋ค. ์ฌ์ฌ์ฉ์ฑ์ ๋์ธ๋ค. ๊ฐ ๋ ์ด์ด์ ์๋ก ๋ค๋ฅธ ์ถ์ํ ์์ค์ ๊ฐ์ง ์ํ์ ํ๋์ ์์น์ํด์ผ๋ก์จ..

CQS (Command Query Separation)
CQS(Command Query Separation)์ ์ดํด๋ณด๊ธฐ ์ ์, ํ๋ฅผ ์ด์ฉํ์ฌ Command์ Query๋ฅผ ๋น๊ตํด ๋ณด๊ณ CQS์ ๋ํด์ ์ดํด๋ณด์. ๐ 1. Command & Query Command Query ๊ฐ์ฒด์ ์ํ๋ฅผ ๋ณ๊ฒฝํ๋๊ฐ? O X ๊ฐ์ ๋ฐํํ๋๊ฐ? X O ์์ setter ๋ฉ์๋ getter ๋ฉ์๋ ๐ 2. CQS CQS(Command Query Separation)๋ ๊ฐ์ฒด์ ๋ชจ๋ ๋ฉ์๋๋ฅผ Command์ Query ๋ ๊ฐ์ง๋ก ๊ตฌ๋ถํ๋ค. ๊ทธ๋์ ํ๋์ ๋ฉ์๋๋ ๋ฐ๋์ Command ๋๋ Query ์ค์์ ํ๋์๋ง ํด๋นํด์ผ ํ๋ค. ์ฆ, ํ๋์ ๋ฉ์๋๊ฐ Command ์ด๋ฉด์ ๋์์ Query ์ผ์๋ ์๋ค. CQS์ ๋ชฉ์ ์ ์ปค๋งจ๋์ ์ฟผ๋ฆฌ๋ฅผ ๋ถ๋ฆฌํ๋ ๊ฒ์ด๋ค. CQS๋ฅผ ์งํค๊ฒ ๋๋ฉด query ..

๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ vs ์ ์ฐจ์งํฅ ํ๋ก๊ทธ๋๋ฐ
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ๊ณผ ์ ์ฐจ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ๋ํด์ ์์๋ณด๋๋ก ํ์. ๐ 1. ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ (Object Oriented Programming, OOP) ๐ 1. ๊ฐ๋ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ด๋ ๊ฐ์ฒด๋ค์ด ๋ชจ์ฌ์ ์ํธ ํ๋ ฅํ๋ฉด์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ ํ๋ก๊ทธ๋๋ฐ ์ค๊ณ ๋ฐฉ๋ฒ์ ๋งํ๋ค. ๐ 2. ํน์ง ๊ฐ์ฒด์งํฅ์ธ์ด์ ํน์ง์ผ๋ก๋ ์บก์ํ(Encapsulation), ์์(Inheritance), ๋คํ์ฑ(Polymorphism), ์ถ์ํ(Abstraction)๊ฐ ์๋ค. ๐ 1. ์บก์ํ(Encapsulation) ๋ด๋ถ๋ฅผ ์บก์์ฒ๋ผ ๊ฐ์ธ์ ๊ทธ ๋ด๋ถ๋ฅผ ๋ณดํธํ๊ณ ๋ณผ ์ ์๊ฒ ํ๋ ๊ฒ์ ๋งํ๋ค. ๋ฐ์ดํฐ์ ๊ธฐ๋ฅ์ ํ๋๋ก ๋ฌถ์ด์ ๊ด๋ฆฌํ๊ฒ ๋๋ค. ์ค์ ๋ก ๊ตฌํ๋๋ ๋ถ๋ถ์ ์ธ๋ถ๋ก ๋๋ฌ๋์ง ์๋๋ก ํ์ฌ ์ ๋ณด๋ฅผ ์๋ํ ์ ์๋ค. ๐ 2..