๋ชฉ๋ก์ ์ฒด ๊ธ (162)
EEALL@ONCE
์ฑ๊ธํด์ ํด๋์ค์ ์ธ์คํด์ค๊ฐ ํ๋๋ง ์๋๋ก ํ๋ฉด์ ์ด ์ธ์คํด์ค์ ๋ํ ์ ์ญ ์ ๊ทผโ(์ก์ธ์ค) ์ง์ ์ ์ ๊ณตํ๋ ์์ฑ ๋์์ธ ํจํด์ ๋๋ค. ์ด ์ด๋ฏธ์ง๋ ์ํํธ์จ์ด ๊ฐ๋ฐ์์ ์ฑ๊ธํด ๋์์ธ ํจํด์ ๊ฐ๋ ์ ์ค๋ช ํ๊ธฐ ์ํด ๋ง๋ค์ด์ก์ต๋๋ค. ์ค์์ '์ฑ๊ธํด' ๊ฐ์ฒด๊ฐ ์์ผ๋ฉฐ, ์ด๋ ๊ทธ ๊ณ ์ ํจ์ ์์งํฉ๋๋ค. ์ฃผ๋ณ์๋ ์ฑ๊ธํด์ ์ ๊ทผํ๋ ค๋ ์ฌ๋ฌ ์์ ๊ฐ์ฒด๋ค์ด ์์ผ๋ฉฐ, ์ด๋ค์ ๋ชจ๋ ๊ฐ์ ์ฑ๊ธํด ์ธ์คํด์ค๋ก ๋ฆฌ๋๋ ์ ๋ฉ๋๋ค. ์ด๋ฅผ ํตํด ์์คํ ๋ด์์ ์ฑ๊ธํด ์ธ์คํด์ค๊ฐ ํ๋๋ง ์กด์ฌํ๋ค๋ ์ ์ด ๊ฐ์กฐ๋ฉ๋๋ค. ํ์ดํ๋ ๋ค๋ฅธ ๊ฐ์ฒด๋ค๋ก๋ถํฐ ์ฑ๊ธํด์ผ๋ก์ ์ ๊ทผ ๋ฐฉํฅ์ ๋ํ๋ ๋๋ค. ์ด ๊ทธ๋ฆผ์ ์ํํธ์จ์ด ๊ฐ๋ฐ์์ ์ฑ๊ธํด ๋์์ธ ํจํด์ด ๊ฐ์ง ์ ์๋ ์ ์ฌ์ ๋ฌธ์ ์ ๋ค์ ๋ฌ์ฌํ๊ณ ์์ต๋๋ค. ์ค์์ ํฐ '์ฑ๊ธํด' ๊ฐ์ฒด๊ฐ ์์ผ๋ฉฐ, ์ฃผ๋ณ์๋ ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ๋ค์ด ..
์ต์ ๋ฒ ํจํด์ ๊ฐ์ฒด ๊ฐ์ ์ผ๋๋ค ์ข ์์ฑ์ ์ ์ํ๋ ๋์์ธ ํจํด ์ค ํ๋์ ๋๋ค. ์ด ํจํด์ ํ ๊ฐ์ฒด์ ์ํ๊ฐ ๋ณ๊ฒฝ๋ ๋, ๊ทธ ๊ฐ์ฒด์ ์ข ์๋ ๋ค์์ ๊ฐ์ฒด๋ค์ด ์๋์ผ๋ก ์๋ฆผ์ ๋ฐ์ ์ํ ๋ณํ์ ๋์ํ ์ ์๋๋ก ํ๋ ๊ฒ์ด ๋ชฉ์ ์ ๋๋ค. ์ฌ๊ธฐ์ ์ฃผ์ ์ญํ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค: Subject(์ฃผ์ฒด): ์ํ๊ฐ ๋ณ๊ฒฝ๋๋ ์ฃผ์ฒด ๊ฐ์ฒด์ ๋๋ค. ์ฌ๋ฌ ์ต์ ๋ฒ๋ค์ ๋ฑ๋กํ๊ณ , ์ํ ๋ณ๊ฒฝ ์์ ์ด๋ค์๊ฒ ์๋ฆฌ๋ ์ฑ ์์ด ์์ต๋๋ค. Observer(์ต์ ๋ฒ): ์ฃผ์ฒด์ ์ํ ๋ณ๊ฒฝ์ ๊ฐ์ํ๊ณ , ์ํ๊ฐ ๋ณ๊ฒฝ๋ ๋ ์ํํ ๋์์ ์ ์ํ๋ ์ธํฐํ์ด์ค์ ๋๋ค. ์ฃผ์ฒด์์ ์๋ฆผ์ ๋ฐ์ผ๋ฉด ์ ๋ฐ์ดํธ ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ์ ์ ํ ์กฐ์น๋ฅผ ์ทจํฉ๋๋ค. public interface Observer { void update(String newState); } ๋ค์์ผ๋ก, ์ด..
ํฉํ ๋ฆฌ ํจํด(Factory Pattern)์ ๊ฐ์ฒด ์์ฑ์ ์ฒ๋ฆฌํ๋ ๋์์ธ ํจํด ์ค ํ๋๋ก, ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ์ฝ๋๋ฅผ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ๋ถ๋ฆฌ์ํค๋ ๋ชฉ์ ์ ๊ฐ๊ณ ์์ต๋๋ค. ์ฃผ๋ก ์ธํฐํ์ด์ค๋ฅผ ํตํด ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ , ์ค์ ์์ฑํ ํด๋์ค์ ๊ฒฐ์ ์ ํฉํ ๋ฆฌ ํด๋์ค๊ฐ ๋ด๋นํฉ๋๋ค. ๊ฐ๋จํ ์์๋ก ์ค๋ช ํ๊ฒ ์ต๋๋ค. ๊ฐ๋ น, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ์ํฉ์ ๊ฐ์ ํด๋ด ์๋ค. ํฉํ ๋ฆฌ ํจํด์ ์ฌ์ฉํ๋ฉด ํด๋ผ์ด์ธํธ๋ ์ด๋ค ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐํ ์ง์ ๋ํ ๊ตฌ์ฒด์ ์ธ ํด๋์ค๋ฅผ ์ ํ์ ์์ด, ๋จ์ง ํฉํ ๋ฆฌ ์ธํฐํ์ด์ค๋ฅผ ํตํด ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ์ด๋ฅผ Java ์ฝ๋๋ก ํํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค: // ์ธํฐํ์ด์ค interface DatabaseConnection { void connect(); } // ๊ตฌ์ฒด์ ์ธ ํด๋์ค๋ค class MyS..
์์กด์ฑ ์ฃผ์ (Dependency Injection)์ ๊ฐ์ฒด ๊ฐ์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๊ณ ์ ์ฐ์ฑ์ ํฅ์์ํค๊ธฐ ์ํ ๋์์ธ ํจํด ์ค ํ๋์ ๋๋ค. ์ฃผ๋ก Spring ํ๋ ์์ํฌ์์ ๋ง์ด ์ฌ์ฉ๋๋๋ฐ, ์ด๋ ๊ฐ์ฒด ๊ฐ์ ์์กด ๊ด๊ณ๋ฅผ ์ธ๋ถ์์ ์ฃผ์ ํ์ฌ ๊ฐ์ฒด๊ฐ ์ง์ ์์กด ๊ฐ์ฒด๋ฅผ ์์ฑํ์ง ์๋๋ก ํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๊ฐ๋จํ ์์๋ก Service์ Mapper ํด๋์ค๋ฅผ ํตํ ์์กด์ฑ ์ฃผ์ ์ ์ค๋ช ํด๋ณด๊ฒ ์ต๋๋ค. ์๋ฅผ ๋ค์ด, Spring ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๋ ์ํฉ์ ๊ฐ์ ํด๋ณผ๊ฒ์. 1. **์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ (์์กด์ฑ ์ฃผ์ ์ ์ฌ์ฉํ์ง ์์ ๊ฒฝ์ฐ):** // UserService ํด๋์ค public class UserService { private UserMapper userMapper = new UserMapper(); public void ..
๋์์ธ ํจํด์ ํ๋ก๊ทธ๋๋ฐ์์ ํน์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ํด๊ฒฐ์ฑ ์ ๋ํ๋ด๋ ํ ํ๋ฆฟ์ ๋๋ค. ์ด๋ฌํ ํจํด์ ๊ณตํต์ ์ธ ์ค๊ณ ๋ฌธ์ ์ ๋ํ ํจ๊ณผ์ ์ธ ํด๊ฒฐ์ฑ ์ ์ ๊ณตํ๋ฉฐ, ์ํํธ์จ์ด ๊ฐ๋ฐ์์ ์ค๊ณ์ ์ผ๊ด์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ์ฆ๊ฐ์ํค๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค. ์ฌ๋ฌ ๊ฐ์ง ๋์์ธ ํจํด์ด ์์ง๋ง, ์ฌ๊ธฐ์๋ ๋ช ๊ฐ์ง ๋ํ์ ์ธ ๋์์ธ ํจํด์ ๊ฐ๋จํ ์ค๋ช ํ๊ฒ ์ต๋๋ค: 1. **์ฑ๊ธํค ํจํด (Singleton Pattern):** - **๋ชฉ์ :** ํด๋์ค์ ์ธ์คํด์ค๊ฐ ์ค์ง ํ๋๋ง ์์ฑ๋๋๋ก ํ๊ณ , ์ด์ ์ ๊ทผํ ์ ์๋ ์ ์ญ์ ์ธ ์ง์ ์ ์ ๊ณตํฉ๋๋ค. - **์์:** ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ, ๋ก๊น ๋ฑ์์ ์ธ์คํด์ค๋ฅผ ๊ณต์ ํ ๋ ์ฌ์ฉ๋ ์ ์์ต๋๋ค. 2. **ํฉํ ๋ฆฌ ๋ฉ์๋ ํจํด (Factory Method Pattern):** - **๋ชฉ์ :..
๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ๋ ์์ํฌ์ ์ฃผ์ ์ฐจ์ด์ ์ ์ ์ด์ ํ๋ฆ์ ๋ํ ์ฃผ๋์ฑ์ด ์ด๋์ ์๋๊ฐ์ ๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ(Library): ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ ๋ฆฝ์ ์ธ ๋๊ตฌ๋ ํจ์์ ์งํฉ์ด๋ฉฐ, ๋น์ ์ด ํ์ํ ๋๋ง๋ค ๊ฐ์ ธ๋ค ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ฃผ๋์ฑ์ ๊ฐ๋ฐ์์๊ฒ ์์ผ๋ฉฐ, ๋น์ ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํธ์ถํด์ ์ฌ์ฉํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ํน์ ๊ธฐ๋ฅ์ ์ํํ๊ธฐ ์ํด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํจ์๋ฅผ ํธ์ถํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์์ ์ฌ์ฉํ๋ ์์ ๋๋ค. ํ๋ ์์ํฌ(Framework): ํ๋ ์์ํฌ๋ ์ด๋ค ์์ ์ ์ํํ๊ธฐ ์ํ ๋ฏธ๋ฆฌ ์ ์๋ ๊ตฌ์กฐ์ ๊ท์น์ ์งํฉ์ ๋๋ค. ์ฃผ๋์ฑ์ ํ๋ ์์ํฌ์๊ฒ ์์ผ๋ฉฐ, ๊ฐ๋ฐ์๋ ํ๋ ์์ํฌ๊ฐ ์ ๊ณตํ๋ ๊ท์น์ ๋ฐ๋ผ๊ฐ์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ๋ ํ๋ ์์ํฌ๊ฐ ์ ์ํ ๊ตฌ์กฐ์ ๋ฐ๋ผ ์ฝ๋๋ฅผ ์์ฑํ๊ณ , ํ๋ ์์ํฌ๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ์ฌ..
Java 8์์ ๋์ ๋ ์ธํฐํ์ด์ค์ ๊ธฐ๋ฅ ๊ฐํ๋ก, `static` ๋ฉ์๋์ `default` ๋ฉ์๋๋ ๊ธฐ์กด์ ์ธํฐํ์ด์ค์ ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. 1. `static` ๋ฉ์๋: `static` ๋ฉ์๋๋ ์ธํฐํ์ด์ค ์์ฒด์ ๋ฉ์๋๋ก์, ์ธํฐํ์ด์ค์ ์ธ์คํด์ค ์์ฑ ์์ด๋ ํธ์ถํ ์ ์์ต๋๋ค. ์ฃผ๋ก ํฌํผ ๋ฉ์๋๋ ๊ณตํต ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์์ ์ฝ๋์์ `announcement` ๋ฉ์๋๊ฐ `static`์ผ๋ก ์ ์ธ๋์ด ์์ต๋๋ค. ```java public interface FoodSafety { static void announcement(){ System.out.println("์ํ์์ ๊ด๋ จ ๊ณต์ง"); } // ๋๋จธ์ง ์ฝ๋ ์๋ต... } ``` ํธ์ถ์ ๋ค์๊ณผ ๊ฐ์ด ์ด๋ฃจ์ด์ง๋๋ค: ```j..
List์์ dto ๊ฐ์ ๋ํด ํน์ ํ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ฐ์ ๊ฒ ๋ผ๋ฆฌ group by ํด์ sum์ ํ๊ณ ์ถ์ ๋ด, stream์ ์ด๋ป๊ฒ ์ ์ฌ์ฉํ ๊ฒ์ธ๊ฐ์ ๋ํ ๊ณต๋ถ๋ฅผ ํด๋ณด๊ฒ ์ต๋๋ค. (1) item์ด๋ผ๋ dto๊ฐ ์์ต๋๋ค. class Item { String category; int quantity; // constructor, getters, setters } (2) stream()์ ํ์ฐ๊ณ , collect๋ฅผ ์ฌ์ฉํ๋๋ฐ ๊ทธ ์ค์ collector๋ผ๋ ์ ํธ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํด์, ๊ทธ๋ฃนํ์ (groupingBy๋ฅผ) ํตํด ์์ผ์ค๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋์ reducing์ ํตํด ๋ํด์ค๋ค. List items = Arrays.asList( new Item("A", 2), new Item("B", 3), new Item("A",..