๐์ฝ์ ์ฑ ์ ๋ฆฌ/์๋ฐ ๋ง์คํฐ๋ถ (7) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ [์๋ฐ ๋ง์คํฐ๋ถ] 12์ฅ : ๋์์ธํจํด ์ฆ๊ธฐ๊ธฐ - ํ๋ ๊ฐ์ฒด์ 'ํ๋'์ ๋ํ ๋์์ธ ํจํด 1. Command 2. Strategy 3. Iterator 4. Observer 12.4.1 Command ํจํด - '๋ช ๋ น'์ ์ธ์คํด์ค๋ก ์ทจ๊ธํ์ฌ ์ฒ๋ฆฌ ์กฐํฉ์ ์ฝ๊ฒ ํ๋ค. ์ฒ๋ฆฌ ๋ด์ฉ์ด ๋น์ทํ ๋ช ๋ น์ ํจํด์ ๋ฐ๋ผ ๊ตฌ๋ถํ๊ฑฐ๋ ์คํํ๋ ์ฒ๋ฆฌ๊ฐ ํ์ํ ์ ์๋ค. ์๋ฅผ ๋ค์ด ๊ณ์ ์ ๋ฐ๋ผ ๋ฐ๋๋ ํ ์ธ์จ ์ ์ฉ์ด ์์ ์ ์๋ค. Command ํจํด์ '๋ช ๋ น' ์์ฒด๋ฅผ ์ธ์คํด์ค๋ก ์ทจ๊ธํด ์ฒ๋ฆฌ์ ์กฐํฉ์ ์ฉ์ดํ๊ฒ ํ๋ ํจํด์ด๋ค. Book.java public class Book { private double amount; public Book(double amount) { this.amount = amount; } public double getAmount() { return amoun.. [์๋ฐ ๋ง์คํฐ๋ถ] 12์ฅ : ๋์์ธํจํด ์ฆ๊ธฐ๊ธฐ - ๊ตฌ์กฐ 12.3 ๊ตฌ์กฐ์ ๊ดํ ํจํด 12.3.1 Adapter ํจํด - ์ธํฐํ์ด์ค์ `ํธํ์ฑ์ด ์๋ ํด๋์ค`๋ค์ ์กฐํฉ์ํค๊ธฐ ๊ธฐ์กด ์์คํ ์ ์ฌ์ฌ์ฉํ์ฌ ์๋ก์ด ์์คํ ์ ์ฌ์ฉํ๋ค๊ณ ๊ฐ์ ํด๋ณด์. ์ด๋ ์๋ก์ด ์์คํ ์ ์ง๊ธ๊น์ง ์ฌ์ฉํ๋ ๋ฉ์๋์๋ ๋ค๋ฅธ ์ธํฐํ์ด์ค๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ์ด ๊ฒฝ์ฐ์๋ ๊ธฐ์กด ์์คํ ์ ์์ ๋์ ์์ ์ ํ๊ฒ ๋๋ฉด ์์ฒญ๋ ๋ณํ๋ฅผ ๊ฐ์ํ๊ฒ ๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ '์๋จ'์ด Adapter ํจํด์ด๋ค. ์ด ํจํด์ '์ธํฐํ์ด์ค'์ ํธํ์ฑ์ด ์๋ ํด๋์ค๋ค์ ์กฐํฉ์ํค๋ ๊ฒ์ ๋ชฉ์ ์ผ๋ก ํ์ฌ ๊ธฐ์กด ์์คํ ๊ณผ ์๋ก์ด ์์คํ ์ ์ธํฐํ์ด์ค๋ฅผ ํก์ํ๋ Adapter๋ฅผ ์ ๊ณตํ์ฌ '์ ์ ๋ณ๊ฒฝ์ผ๋ก ๊ธฐ์กด ์์คํ ์ ์๋ก์ด ์์คํ ์ ์ ์ฉํ ์ ์๋๋ก' ํ๋ค. Adapter ํจํด์ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค. 1. ์์์ ์ด์ฉํ๋ ๋ฐฉ๋ฒ .. [์๋ฐ ๋ง์คํฐ๋ถ] 12์ฅ ๋์์ธํจํด ์ฆ๊ธฐ๊ธฐ - ์์ฑ 12.1 ๋์์ธ ํจํด์ ๊ธฐ๋ณธ 12.1.1 ๋์์ธ ํจํด์ด๋? ์ฐ๋ฆฌ๊ฐ ํ๋ก๊ทธ๋จ์ ์์ฑํ ๋ ์์ฑ๋๋ ๊ฒ์ '๋ชฉ์ '๊ณผ '๊ฐ๋ฐ์'์ ๋ฐ๋ผ ์ฒ์ฐจ๋ง๋ณ์ด๋ค. ๊ทธ๋ฌ๋ ์ด๋ฅผ ๊ฐ๊ฐ์ ๋ถํ๋จ์๋ก ์ดํด๋ณด๋ฉด ํ๋ก๊ทธ๋จ๋ง๋ค ๋น์ทํ ๋ถ๋ถ์ด ์กด์ฌํ๋ค. ์๋ฅผ ๋ค์ด, '์ด๋ค ์ํ๊ฐ ๋ฐ๋์์ ๋ ๋ฐ์ํ๋ ํด๋์ค๊ตฐ ๋ง๋ค๊ธฐ' '๋ค๋ฅธ ํ์ด ๋ง๋ ๋ถํ๊ณผ์ ์ค๊ฐ๋ฅผ ํ๋ ํด๋์ค ๋ง๋ค๊ธฐ', '์ฌ๊ท์ ์ธ ๊ตฌ์กฐ๋ฅผ ํด๋์ค๋ก ํํํ๊ธฐ'์ ๊ฐ์ ๊ฒ๋ค์ด ์๋ค. ์ด๋ฐ ๋น์ทํ ๋ชฉ์ ์ ๋ํด ํด๋์ค ๊ตฌ์กฐ์ ๋ชจ๋ฒ์ฌ๋ก๋ฅผ ํจํด์ผ๋ก ์ ๋ฆฌํ ๊ฒ์ด ๋์์ธ ํจํด์ด๋ค. ์ด ์ค ๊ฐ์ฅ ์ ๋ช ํ ๊ฒ์ด 'GoF ๋์์ธ ํจํด'์ด๋ฉฐ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ๋์์ด๋๋ ๋์์ธ ํจํด 23๊ฐ์ง๋ฅผ ์๊ฐํ๋ค. 23์ข ๋ฅ์ ํจํด์ ํฌ๊ฒ 3๊ฐ์ง๋ก ๋ถ๋ฅ๋์ด ์๋ค. ๊ฐ์ฒด์ '์์ฑ'์ ๊ดํ ํจํด ํ๋ก๊ทธ๋จ์ '๊ตฌ์กฐ'์ ๊ด.. [์๋ฐ ๋ง์คํฐ๋ถ] 10์ฅ ๊ฐ์ฒด์งํฅ ์ฆ๊ธฐ๊ธฐ 10.1 ๊ธฐ๋ณธํ๊ณผ ์ฐธ์กฐํ์ ๊ฐ ์ ๋ฌํ๊ธฐ 10.1.1 ๊ธฐ๋ณธํ๊ณผ ์ฐธ์กฐํ์ ๊ฐ ์ ๋ฌ ๋ฐฉ๋ฒ ๊ธฐ๋ณธํ์ผ๋ก ๊ฐ์ ์ ๋ฌํ๋ ๊ฒฝ์ฐ์๋ ์์ ์์์ ๊ฐ์ ๋ณ๊ฒฝํด๋ ํธ์ถ์์ ์ํฅ์ ์ฃผ์ง ๋ชปํ๋ค. ํ์ง๋ง ์ฐธ์กฐํ์ ๊ฐ ์ ๋ฌ์ ํ๋ฉด ์์ ์ ์์์ ๋ณ๊ฒฝ๋ ๊ฐ์ด ํธ์ถ์ ๋ฐ์๋๋ค. "์ฐธ์กฐํ"์ ๊ฒฝ์ฐ๋ ๊ฐ์ฒด ์์ฒด์ ๊ฐ์ ๋ณต์ฌํด์ ๋๊ธฐ๋ ๊ฒ์ด ์๋ '์ฐธ์กฐ'๋ฅผ ๋ํ๋ด๋ ๊ฐ์ ์ ๋ฌํ๊ธฐ ๋๋ฌธ์ด๋ค. ๋ฐ๋ผ์ ํธ์ถ๋ ๋ฉ์๋์ ๋ณ๊ฒฝ ์ฌํญ์ด ํธ์ถ์์๊ฒ ๋ฐ์๋๋ค. ๋ฐ๋ผ์, ์ธ์์ ๊ฐ์ฒด๋ฅผ ์ ๋ฌํ์ ๋๋ ๋ฉ์๋ ์์์ ๊ฐ์ด ๋ณํ๋์ง์ ๋ํ ์ฌ๋ถ๋ฅผ ๋ช ํํ ํด์ผ๋ง ํ๋ค. ์ฑ ์ ์ ์๋ ์ด๋ฅผ ์ํด ๊ท์น์ ์ ํด๋์๋ค. ์์น์ ์ผ๋ก ์ธ์ ๊ฐ์ฒด์ ์์ ์ ํผํ๋ค. ๋ฐํ๊ฐ์ด void์ธ ๊ฒฝ์ฐ ์ธ์๊ฐ์ฒด๋ฅผ ์์ ํด๋ ์ข๋ค. ๋ฐํ๊ฐ์ด void ์ด์ธ์ ๊ฒฝ์ฐ ์ธ์ ๊ฐ์ฒด๋ฅผ ๋ณ๊ฒฝํด์๋ ์๋๋ค.. [์๋ฐ ๋ง์คํฐ๋ถ] 9์ฅ ๋ ์ง ์ฒ๋ฆฌ ๊ณต๋ตํ๊ธฐ 9.1 Date์ Calendar ๊ตฌ๋ถํ์ฌ ์ฌ์ฉํ๊ธฐ Date๋ ์ผ์, ํน์ ์ ์๊ฐ์ ๋ณด๊ดํ๋ ํด๋์ค์ด๊ณ Calendar๋ ์ฐ, ์, ์ผ, ์, ๋ถ, ์ด ๋จ์๋ก ๊ฐ๋ณ์ ์ผ๋ก ์ค์ /์ทจ๋/๊ฐ์ฐ/๊ฐ์ฐํ ์ ์๋ ํด๋์ค์ด๋ค. Date ํด๋์ค ์ฌ์ฉํ๊ธฐ //1 Date date1 = new Date(); System.out.println(date1); //2 Date date2 = new Date(5000); System.out.println(date2); 1๋ฒ ์ฝ๋๋ ํ์ฌ ์๊ฐ์ ์ถ๋ ฅํ๊ณ 2๋ฒ ์ฝ๋๋ 1970๋ ์์ 5000ms ์ง๋ ์๊ฐ์ ์ถ๋ ฅํ๋ค. Dateํด๋์ค๋ setTime์ผ๋ก ์๊ฐ์ ๋ฐ๊ฟ ์ ์์ผ๋ฏ๋ก ๋ถ๋ณ๊ฐ์ฒด๊ฐ ์๋๋ค. Calendar ํด๋์ค ์ฌ์ฉํ๊ธฐ Calendar calendar = Calendar.get.. [์๋ฐ ๋ง์คํฐ๋ถ] 6์ฅ ์์ธ ๊ณต๋ตํ๊ธฐ 6.1 ์์ธ์ ๊ธฐ๋ณธ 6.1.1 ์์ธ์ ์ธ ๊ฐ์ง ์ข ๋ฅ 1) ๊ฒ์ฌ ์์ธ (Exception) ์ฃผ๋ก ํ๋ก๊ทธ๋จ ์์ฑ ์์ ์์ํ ์ ์๋ ๋น์ ์ ์ํ๋ฅผ ํต์งํ๊ธฐ ์ํด ์ฌ์ฉ. ์๋ฅผ ๋ค์ด ํ์ ์ ์ถ๋ ฅ์ด ์คํจํ ๊ฒฝ์ฐ IOException์ด ๋ฐ์ํ๊ฒ ๋๋๋ฐ ์ด๋ฅผ ์์ํ๊ณ ๋ฏธ๋ฆฌ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ์ง catchํ๊ฑฐ๋ throwํ๋ ๊ฒ์ด๋ค. ์ด๋ ๊ฒ ์ฒ๋ฆฌํ์ง ์์ผ๋ฉด ์ปดํ์ผ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค. ํ์ง๋ง ๋ชจ๋ ์์ธ๋ฅผ ํฌ์ฐฉํ๊ฒ ๋๋ค๋ฉด ์ ์ํด์ผํ๋ ์์ธ ์ํฉ์ด ๋ง์์ง๊ณ ๋ณต์กํด์ง๋ฏ๋ก '์คํ ์ ์์ธ'๋ก ์ฒ๋ฆฌํ๋๋ก ๋ง๋ค์๋ค. 2) ์คํ ์ ์์ธ (RuntimeException) ์ฃผ๋ก ํ๋ก๊ทธ๋จ ์์ฑ ์์ ์์ํ ์ ์๋ ์ค๋ฅ๋ฅผ ํต์งํ๊ธฐ ์ํด ์ฌ์ฉ. '๊ฒ์ฌ ์์ธ'์๋ ๋ฌ๋ฆฌ ํ๋ก๊ทธ๋จ์์ ํฌ์ฐฉํ์ง ์์๋ ๋ฐ๋ก '์ปดํ์ผ ์ค๋ฅ'๋ ๋ฐ์ํ์ง ์๋๋ค... [์๋ฐ ๋ง์คํฐ๋ถ] 1์ฅ๋ถํฐ 5์ฅ.. ๋๋ค์๊ณผ Stream API๊น์ง. 1.1 ์๋ฐ๋? 1.1.1 ์๋ฐ์ ํน์ง ๊ฐ์ฒด ์งํฅ ํด๋์ค์ ์์ ๊ตฌ์กฐ๋ฅผ ํ์ฉํ์ฌ ํ์ฅ์ฑ์ด ์ฐ์ํ๋ฉฐ ์ฌํ์ฉํ๊ธฐ ์ฌ์ด ํ๋ก๊ทธ๋๋ฐ์ด ๊ฐ๋ฅํจ. ํ๋ซํผ ๋ ๋ฆฝ์ฑ ํ๋ก๊ทธ๋จ์ด ์๋ฐ ๊ฐ์๋จธ์ ์์ ์คํ๋๋ฏ๋ก ํ๋ก๊ทธ๋จ ์์ฒด๋ ์ด์์ฒด์ ์ ๋ ๋ฆฝ์ ์ผ๋ก ์คํ๋ ์ ์์. ๋ฐ์ด๋ ์์ฝ ์์คํ ์ฐ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ๋ฏธ๋ค์จ์ด(DBMS ๋ฑ)๊ฐ ๋ค์ ์กด์ฌํจ์ผ๋ก ํจ์จ์ ์ธ ๊ฐ๋ฐ์ด ๊ฐ๋ฅํ๋ค. 1.1.3 ์๋ฐ๊ฐ ์คํ๋๋ ์์ ์๋ฐ ํ๋ก๊ทธ๋จ์ ์์ฑํ๊ณ ์คํํ๊ธฐ๊น์ง์ ์์ฃผ ๊ฐ๋จํ ํ๋ฆ ์ค๋ช 1. ์๋ฐ์์ค์ฝ๋๋ฅผ ์์ฑ 2. javac ์ปค๋งจ๋๋ฅผ ์คํํ์ฌ ์์ค ์ฝ๋๋ฅผ ์ปดํ์ผํ๊ณ `ํด๋์ค ํ์ผ`์ด๋ผ๊ณ ๋ถ๋ฆฌ๋ ์ค๊ฐ์ฝ๋๋ฅผ ์์ฑํ๋ค. 3. javac ์ปค๋งจ๋๋ฅผ ์คํํ์ฌ java vm์ด ํด๋์ค ํ์ผ์ ํด์ํ์ฌ ์ฒ๋ฆฌํ๋ค. 2.4 ๋ช ๋ช ๊ท์น 2.4.1 ํด๋์ค์ ๋ณ์๋ '์นด.. ์ด์ 1 ๋ค์