๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ“š์ฝ์€ ์ฑ… ์ •๋ฆฌ/์ž๋ฐ” ๋งˆ์Šคํ„ฐ๋ถ

(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 ํด๋ž˜์Šค์™€ ๋ณ€์ˆ˜๋Š” '์นด..

๋ฐ˜์‘ํ˜•