์ „์ฒด ๊ธ€

๊น€ํ˜œ์ธ์€ ๋ฌด์—‡์„ ๊ณต๋ถ€ํ• ๊นŒ
๋ฉ”ํƒ€๋ฒ„์Šค๋ž€? Meta + Universe ๋ฉ”ํƒ€๋ฒ„์Šค์—์„œ ๋ฉ”ํƒ€๋Š” '~์„ ๋„˜์–ด์„œ'๋ผ๋Š” ๋œป์„ ๊ฐ€์ง„๋‹ค. '์œ ๋‹ˆ๋ฒ„์Šค'๋Š” ์šฐ์ฃผ ์ฆ‰, ํ˜„์‹ค์„ธ๊ณ„๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฉ”ํƒ€๋ฒ„์Šค๋Š” ํ˜„์‹ค์„ธ๊ณ„๋ฅผ ๋„˜์–ด์„  ๋˜๋‹ค๋ฅธ ์ƒˆ๋กœ์šด ์„ธ๊ณ„๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ๋ฉ”ํƒ€๋ฒ„์Šค์—์„œ ๋‚˜์˜ ์•„๋ฐ”ํƒ€๋ฅผ ๋งŒ๋“ค์–ด ์‚ฌ๋žŒ๋“ค๊ณผ์˜ ์†Œํ†ต ๋ฐ ๋ฌธํ™”์ƒํ™œ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. IT์—…๊ณ„์—์„œ ๋ฉ”ํƒ€๋ฒ„์Šค๋ฅผ ์ฃผ๋ชฉํ•˜๋Š” ํฐ ์ด์œ ๋Š” ๋น„์ง€๋‹ˆ์Šค์ ์œผ๋กœ ์“ฐ์ผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋ฉ”ํƒ€๋ฒ„์Šค์—์„œ ๋งˆ์ผ€ํŒ…, ๋ฏธํŒ…/ํšŒ์˜, ํ™๋ณด ๋“ฑ์˜ ๋น„์ง€๋‹ˆ์Šค ์—…๋ฌด๋„ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฉ”ํƒ€๋ฒ„์Šค์˜ ์ข…๋ฅ˜ ์ฆ๊ฐ•ํ˜„์‹ค(AR) ํ˜„์‹ค ์„ธ๊ณ„๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ, ๊ฐ€์ƒ์˜ ์ด๋ฏธ์ง€๋‚˜ ์ •๋ณด๊ฐ€ ๊ฒน์ณ๋ณด์ด๊ฒŒ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ•ฉ์„ฑํ•œ๋‹ค. ์ด๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ฑฐ๋ถ€๊ฐ์€ ์ค„์ด๊ณ  ๋ชฐ์ž…๊ฐ์€ ๋†’์ด๋Š” ํšจ๊ณผ๊ฐ€ ์žˆ๋‹ค. ex ) 'ํฌ์ผ“๋ชฌ ๊ณ ' ๊ฒŒ์ž„์€ ์นด๋ฉ”๋ผ๋ฅผ ํ†ตํ•ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ํฌ์ผ“๋ชฌ์ด ๋“ฑ์žฅํ•˜๋ฉฐ ๊ฒŒ์ž„์„ ์ฆ๊ธธ ์ˆ˜ ์žˆ๋‹ค. ..
ARM ์˜ ๊ฐœ์š” RISC ๋จธ์‹  ๊ธฐ๋ฐ˜์ด๋‹ค.( 32๋น„ํŠธ์˜ RISC ์•„ํ‚คํ…์ฒ˜) ๋‹จ์ˆœํ•œ ๋””์ž์ธ, ์ ์€ ๋ช…๋ น์–ด ์„ธํŠธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์ „๋ ฅ์„ ์ ๊ฒŒ ์“ฐ๊ณ  ๊ฐ€๊ฒฉ๋„ ์‹ธ๋‹ค. ๋Œ€์šฉ๋Ÿ‰ ๋ฒ”์šฉ ๋ ˆ์ง€์Šคํ„ฐ ํŒŒ์ผ์„ ๊ฐ€์ง„๋‹ค. load/store ์•„ํ‚คํ…์ฒ˜๋‹ค. load/ store ๋ช…๋ น์–ด๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฎ๊ธฐ๋Š” ๋ช…๋ น์–ด๋‹ค. ๋ ˆ์ง€์Šคํ„ฐ์˜ ๊ฐ’๋งŒ ์ด์šฉํ•˜์—ฌ ํ”„๋กœ์„ธ์‹ฑํ•œ๋‹ค. ๋ช…๋ น์–ด์˜ ๊ธธ์ด๋Š” 32๋น„ํŠธ๋กœ ๊ณ ์ •๋˜์–ด์žˆ๋‹ค. ARM์—์„œ byte๋Š” 8bit, halfword๋Š” 16bit, word๋Š” 32bit์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง„๋‹ค. ARM์—์„œ ๋ช…๋ น์–ด๋Š” 32๋น„ํŠธ์˜ ARM ๋ช…๋ น์–ด ์„ธํŠธ๋‚˜ 16๋น„ํŠธ์˜ Thumb ๋ช…๋ น์–ด ์„ธํŠธ๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค. Jazelle ์ฝ”์–ด๋“ค์€ ์ž๋ฐ” ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ARM์—์„œ์˜ ๋ ˆ์ง€์Šคํ„ฐ ์ฝ”์–ด์˜ 37๊ฐœ ๋ ˆ์ง€์Šคํ„ฐ 1๊ฐœ์˜ PC 1๊ฐœ์˜ CPSR(Current ..
์ปดํ“จํ„ฐ์˜ ๊ธฐ๋ณธ ์‚ฌ์ดํด์€ Fetch - Decode - Excute - Write back ์ด๋‹ค. ์˜ˆ์‹œ๋กœ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์“ฐ๊ฑฐ๋‚˜ ์ฝ์„๋•Œ(Write back ์ž‘์—…) 100 ์‹ธ์ดํด์ด ๊ฑธ๋ฆฌ๊ณ  ๋‚˜๋จธ์ง€ ์ž‘์—…ํ• ๋•Œ 1 ์‹ธ์ดํด์”ฉ ๊ฑธ๋ฆฐ๋‹ค๋ฉด, 10๊ฐœ์˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ์ด ์‹ธ์ดํด ์ˆ˜๋Š” 10 * (1+1+1+1000) = 1030 ์‹ธ์ดํด ์ด๋‹ค. ํŒŒ์ดํ”„๋ผ์ธ ๋ชฉ์  ์ฒ˜๋ฆฌ์†๋„ ํ–ฅ์ƒ ๋ฐฉ๋ฒ• ๊ฐ ์‹ธ์ดํด๋งˆ๋‹ค ๊ฐ™์€ ํด๋ฝ์•ˆ์—์„œ ์ž‘๋™ํ•œ๋‹ค. ๊ฐ™์€ ์ž์›(๋ฆฌ์†Œ์Šค)๋ฅผ ๋™์‹œ์— ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค. ์ž์›์—๋Š” IM, Reg, DM, ALU๊ฐ€ ์žˆ๋‹ค. ๊ธด ์ ‘๊ทผ์‹œ๊ฐ„์„ ์งง๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ํŠนํžˆ ๋ฉ”๋ชจ๋ฆฌ์˜ ์ ‘๊ทผ์‹œ๊ฐ„์„ ์งง๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ์บ์‹œ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์™€ ํ”„๋กœ์„ธ์„œ ์‚ฌ์ด์˜ ์ž‘์€ ๊ณ ์† ๋ฉ”๋ชจ๋ฆฌ ์žฅ์น˜๋‹ค. ํ”„๋กœ์„ธ์„œ์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚จ๋‹ค. ํ•œ๋ฒˆ ์‚ฌ์šฉ๋œ ์ฝ”๋“œ๋Š” ์žฌ..
I/O๊ธฐ์ˆ  I/O ๊ธฐ์ˆ (์ž…์ถœ๋ ฅ ๋ฐฉ๋ฒ•)์€ Programmed I/O, Interrupt I/O, DMA(Direct Memory Access)๋กœ ๋‚˜๋‰  ์ˆ˜ ์žˆ๋‹ค. Programmed I/O ํ”„๋กœ์„ธ์„œ๊ฐ€ I/O๋™์ž‘์„ ์œ„ํ•œ ์ œ์–ด ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•œ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์ด I/O์žฅ์น˜ ์ƒํƒœ๋ฅผ ์ œ์–ด์‹ ํ˜ธ๋กœ ์ฒดํฌํ•œ๋‹ค. I/O๊ฐ€ ์ค€๋น„๋˜๋ฉด I/O๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์ด๋•Œ ์ค€๋น„์™€ ์ˆ˜ํ–‰์€ ์ œ์–ด์‹ ํ˜ธ๋กœ ์ฒดํฌํ•œ๋‹ค. (๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š” ์ž‘์—…, ์“ฐ๋Š” ์ž‘์—…์„ ํ• ๋•Œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ๋‚ด๋ณด๋‚ด๋Š”๊ฑด ์ œ์–ด์‹ ํ˜ธ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.) ํ”„๋กœ์„ธ์„œ๊ฐ€ I/O๋ณด๋‹ค ์†๋„๊ฐ€ ๋น ๋ฅด๊ธฐ๋•Œ๋ฌธ์— ํ”„๋กœ์„ธ์„œ์˜ ์‹œ๊ฐ„๋‚ญ๋น„๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค. Interrupt I/O I/O์žฅ์น˜๊ฐ€ ์ค€๋น„๋˜๋ฉด ํ”„๋กœ์„ธ์„œ์—๊ฒŒ interrupt ์‹ ํ˜ธ๋ฅผ ์ค˜์„œ ์•Œ๋ฆฐ๋‹ค.(์ œ์–ด์‹ ํ˜ธ ์ฒดํฌ) ํ”„๋กœ์„ธ์„œ๋Š” ์ˆ˜ํ–‰ํ•˜๊ณ ์žˆ๋˜ ์ž‘์—…์„ ์ค‘๋‹จํ•˜๊ณ  I/O๋ฅผ ์‹คํ–‰ํ•œ..
๊นƒ์— pushํ•˜๋ ค๋‹ˆ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค To https://github.com/hyein604/flutter_todo_list ! [rejected] main -> main (non-fast-forward) error: failed to push some refs to 'https://github.com/hyein604/flutter_todo_list' hint: Updates were rejected because the tip of your current branch is behind hint: its remote counterpart. Integrate the remote changes (e.g. hint: 'git pull ...') before pushing again. hint: See the '..
i-list๊ฐ€ ์–ด๋–ป๊ฒŒ data block์— ์ ‘๊ทผํ•˜๋Š”๊ฐ€? i-list์˜ 'i'๋Š” index์˜ ์•ฝ์ž์ด๋‹ค. i-list์—๋Š” i-node๋“ค์ด ์žˆ๋‹ค ํ•˜๋‚˜์˜ i-node์—” ํŒŒ์ผ ์–ดํŠธ๋ฆฌ๋ทฐํŠธ(ํŒŒ์ผ์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ)๋ฅผ ์ €์žฅํ•˜๊ณ  ์žˆ๊ณ , ํŒŒ์ผ์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค ํฌ์ธํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์ด ์ธ๋ฑ์Šค ํฌ์ธํ„ฐ๋Š” ํŒŒ์ผ์˜ ์œ„์น˜์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ์ด๋‹ค. Direct pointer(ํฌ์ธํ„ฐ)๋Š” ์ตœ๋Œ€ 12๊ฐœ๊นŒ์ง€ ์žˆ๋‹ค. Direct pointer๊ฐ€ 12๊ฐœ ์ด์ƒ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—” Single indirect pointer, Double indirect pointer, Triple indirect pointer๋ฅผ ์ด์šฉํ•œ๋‹ค. i-node์˜ 0๋ฒˆ๋ถ€ํ„ฐ 11๋ฒˆ์งธ ๋””๋ ‰ํ† ๋ฆฌ ๊นŒ์ง€ direct pointer๋ฅผ ๋‹ค์ผ๋‹ค๋ฉด 12๋ฒˆ์งธ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 12๋ฒˆ์งธ ๋””๋ ‰ํ† ๋ฆฌ๋Š” data..
Bootstrap program(Bootstrop loader) ์ปดํ“จํ„ฐ๊ฐ€ ๋ถ€ํŒ…ํ• ๋•Œ ๋˜๋Š” ์žฌ๋ถ€ํŒ…ํ• ๋•Œ ๋Œ์•„๊ฐ€๋Š” ํ”„๋กœ๊ทธ๋žจ ROM ๋˜๋Š” EEPROM์— ์ €์žฅ๋˜์–ด์žˆ๋‹ค. ์ด๋“ค์„ firmware์ด๋ผ๊ณ  ํ•œ๋‹ค. RAM์€ ํœ˜๋ฐœ์„ฑ ๋ฉ”๋ชจ๋ฆฌ, ROM์€ ์ „๊ธฐ๊ฐ€ ๊บผ์ ธ๋„ ์ €์žฅ๋˜์–ด์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ๋‹ค. EEPROM์€ ROM์˜ ์ข…๋ฅ˜ ์ค‘ ํ•˜๋‚˜์ด๋‹ค. firmware์€ hardware์™€ software์˜ ์ค‘๊ฐ„์ด๋ผ๊ณ  ๋ณด๋ฉด๋œ๋‹ค. hardware๋Š” ์ˆ˜์ •์ด ์–ด๋ ต๊ณ , software์€ ์ˆ˜์ •์ด ์‰ฝ๋‹ค๋ฉด, firmware์€ ํ•˜๋“œ์›จ์–ด ์žฅ๋น„๊ธด ํ•œ๋ฐ, ์†Œํ”„ํŠธ์›จ์–ด์ฒ˜๋Ÿผ ์ˆ˜์ •๋„ ์‰ฝ๋‹ค ์‹œ์Šคํ…œ์˜ ๋ชจ๋“  ๊ด€์ ์—์„œ ์ดˆ๊ธฐํ™”๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค.(=POST(Power On Self Test)๋ฃจํ‹ด์„ ์‹คํ–‰ํ•œ๋‹ค). CPU๊ฐ€ ์ž˜๋Œ์•„๊ฐ€๋Š”์ง€, ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ์„๊ฑฐ ๋‹ค ์žˆ๋Š”์ง€..๋“ฑ๋“ฑ ์„ ์…€ํ”„์ฒดํฌํ•œ๋‹ค! ์šด์˜์ฒด์ œ ์ปค..
์ €์žฅ์žฅ์น˜(storage): ํŒŒ์ผ์ด ์ €์žฅ๋˜๋Š” ๊ณณ ์ €์žฅ์žฅ์น˜ ์‹œ์Šคํ…œ์˜ ์ข…๋ฅ˜ HDD: ์ž๊ธฐ ๋””์Šคํฌ SSD : ์ „์ž ๋””์Šคํฌ ๋‘ ์ €์žฅ์žฅ์น˜๊ฐ€ ๊ฐ€์ง€๋Š” ๋ฌผ๋ฆฌ์ ์ธ ํŠน์„ฑ์ด ๋‹ค๋ฅด๊ณ , ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ด€์ ์—์„œ ํŒŒ์ผ์„ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ค˜์•ผ ํ•˜๋Š๋ƒ๋„ ๋‹ค๋ฅด๋‹ค. ํ•˜์ง€๋งŒ ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ๋„์›€์„ ๋ฐ›์€ ๋ชจ๋“  ์ €์žฅ ๋ฐ์ดํ„ฐ๋“ค์€ ์šด์˜์ฒด์ œ ๊ด€์ ์—์„œ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ๋ณด์ธ๋‹ค ํŒŒ์ผ์˜ ๊ฐœ๋… ์—ฐ์†์ ์œผ๋กœ ๋…ผ๋ฆฌ์ ์ธ ์ฃผ์†Œ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•˜๊ณ  ์žˆ๋Š” ๊ฐœ์ฒด ํŒŒ์ผ์€ ๋ฐ์ดํ„ฐ ํŒŒ์ผ์™€ ์‹คํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ ํŒŒ์ผ๋กœ ๋‚˜๋‰œ๋‹ค ๋ฐ์ดํ„ฐํŒŒ์ผ : ์•„์Šคํ‚ค์ฝ”๋“œ ํ…์ŠคํŠธ ํŒŒ์ผํ˜•ํƒœ ํ”„๋กœ๊ทธ๋žจํŒŒ์ผ : ์ด์ง„(binary) ํŒŒ์ผํ˜•ํƒœ ํŒŒ์ผ์˜ ๊ตฌ์กฐ ํŒŒ์ผ๋งˆ๋‹ค ๊ณ ์œ ํ•˜๊ฒŒ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค(ํ…์ŠคํŠธ ํŒŒ์ผ, ์˜ค๋ธŒ์ ํŠธ ํŒŒ์ผ, ์†Œ์ŠคํŒŒ์ผ ๋“ฑ๋“ฑ..) ๋ฌด๊ตฌ์กฐ : ๊ตฌ์กฐ๊ฐ€ ์—†๋‹ค. ๋‹จ์–ด/๋ฐ”์ดํŠธ์˜ ๋‚˜์—ด ๋‹จ์ˆœ ๊ตฌ์กฐ : ์ค„๊ธ€(Lines), ๊ณ ..
-์šด์˜์ฒด์ œ๋Š” ์ปดํ“จํ„ฐ์˜ ํ•˜๋“œ์›จ์–ด์™€ ์‚ฌ์šฉ์ž ์‚ฌ์ด์˜ ์ค‘๊ฐ„์— ์œ„์น˜ํ•˜๊ณ  ์žˆ๊ณ , ์šด์˜์ฒด์ œ์˜ ๋ชฉ์ ์„ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์†Œํ”„ํŠธ์›จ์–ด ํ˜•ํƒœ๋กœ ๊ตฌํ˜„๋˜์–ด์žˆ๋Š” ์ผ์ข…์˜ ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค. -์šด์˜์ฒด์ œ์˜ ๋ชฉ์  ์‚ฌ์šฉ์ž ๊ด€์  : ์‚ฌ์šฉ์ž๊ฐ€ ํ•˜๊ณ ์‹ถ์€๊ฑธ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•œ๋‹ค ์‹œ์Šคํ…œ(ํ•˜๋“œ์›จ์–ด) ๊ด€์  : CPU, ๋ฉ”๋ชจ๋ฆฌ, ์ €์žฅ์†Œ๋ฅผ ์ž˜ ๊ด€๋ฆฌ&์ œ์–ดํ•ด์„œ ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์„ ์ž˜ ์‹คํ–‰ํ•œ๋‹ค -> Resource manager -(@์ค‘์š”@)์šด์˜์ฒด์ œ์˜ ๋ชฉ์ ์„ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์š”๊ตฌ์‚ฌํ•ญ Convenience(ํŽธ๋ฆฌ) : ์‚ฌ์šฉ์ž ๊ด€์ ์—์„œ ์šด์˜์ฒด์ œ๋Š” ์‚ฌ์šฉํ•˜๊ธฐ ์ง๊ด€์ ์ด๊ณ  ํŽธ๋ฆฌํ•ด์•ผํ•œ๋‹ค (CLI ๋ณด๋‹ค GUI๊ฐ€ ํŽธ๋ฆฌ์„ฑ์ด ๋†’๋‹ค) Efficiency(ํšจ์œจ) : ์‹œ์Šคํ…œ ๊ด€์ ์—์„œ ์šด์˜์ฒด์ œ๋Š” ์ž์›์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•ด์•ผํ•œ๋‹ค *ํŽธ๋ฆฌ์™€ ํšจ์œจ์€ trade off ๊ด€๊ณ„์— ์žˆ๋‹ค.(trad..
์ •์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค๊ณ , ๊ทธ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ์„œ๋ธŒ ํด๋ž˜์Šค์—์„œ ์–ด๋–ค ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค์ง€ ๊ฒฐ์ •ํ•˜๋Š” ํŒจํ„ด์ด๋‹ค. ์ฆ‰, ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“œ๋Š” ์ผ์„ ์„œ๋ธŒํด๋ž˜์Šค์—๊ฒŒ ๋งก๊ธฐ๋Š”๊ฒƒ์ด๋‹ค. ํŒฉํ† ๋ฆฌ ํŒจํ„ด์€ 'ํŒฉํ† ๋ฆฌ ๋ฉ”์†Œ๋“œ ํŒจํ„ด'๊ณผ '์ถ”์ƒ ํŒฉํ† ๋ฆฌ ํŒจํ„ด'์œผ๋กœ ๋‚˜๋‰œ๋‹ค. ํŒฉํ† ๋ฆฌ ๋ฉ”์†Œ๋“œ ํŒจํ„ด : ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ •์˜ํ•˜๊ณ , ์–ด๋–ค ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค์ง€๋Š” ์„œ๋ธŒ ํด๋ž˜์Šค์—์„œ ๊ฒฐ์ •ํ•œ๋‹ค. ์ถ”์ƒ ํŒฉํ† ๋ฆฌ ํŒจํ„ด : ์ถ”์ƒ ํŒฉํ† ๋ฆฌ ํŒจํ„ด์€ ๋งŽ์€ ์ˆ˜์˜ ์—ฐ๊ด€๋œ ์„œ๋ธŒ ํด๋ž˜์Šค๋ฅผ ํŠน์ • ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์–ด ํ•œ๋ฒˆ์— ๊ต์ฒดํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“  ๋””์ž์ธ ํŒจํ„ด์ด๋‹ค. ์žฅ์  ์ƒˆ๋กœ์šด ๊ตฌํ˜„ ํด๋ž˜์Šค๊ฐ€ ์ถ”๊ฐ€๋˜์–ด๋„ ๊ธฐ์กด Factory์ฝ”๋“œ์˜ ์ˆ˜์ • ์—†์ด ์ƒˆ๋กœ์šด Factory๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋œ๋‹ค -> OCP์›์น™์„ ์ง€ํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. ๊ตฌ์ฒด์ ์ธ ํด๋ž˜์Šค๋ฅผ ์ถ”์ƒํ™”..
์ •์˜ ์–ด๋–ค ํด๋ž˜์Šค๊ฐ€ ์ตœ์ดˆ ํ•œ๋ฒˆ๋งŒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๊ณ  ๊ทธ ๋ฉ”๋ชจ๋ฆฌ์— ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•˜๋Š” ๋””์ž์ธ ํŒจํ„ด์ด๋‹ค. ์‰ฝ๊ฒŒ๋งํ•ด, ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์€ ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด์Šค๋งŒ ์ƒ์„ฑํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๋””์ž์ธ ํŒจํ„ด์ด๋‹ค. ์ƒ์„ฑ์ž๋ฅผ ์—ฌ๋Ÿฌ๋ฒˆ ํ˜ธ์ถœํ•ด๋„, ์‹ค์ œ๋กœ ์ƒ์„ฑ๋˜๋Š” ์ธ์Šคํ„ด์Šค๋Š” ํ•˜๋‚˜์ด๋‹ค. ์ตœ์ดˆ๋กœ ์ƒ์„ฑ๋œ ์ดํ›„์— ํ˜ธ์ถœ๋œ ์ƒ์„ฑ์ž๋Š” ์ด๋ฏธ ์ตœ์ดˆ๋กœ ์ƒ์„ฑํ–ˆ๋˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๋ฐ˜ํ™˜์‹œํ‚ค๋„๋ก ๋งŒ๋“ ๊ฒƒ์ด๋‹ค.(์ƒ์„ฑ์ž๋ฅผ private์œผ๋กœ ์„ ์–ธํ•ด ๋‹ค๋ฅธ ๊ณณ์—์„œ ์ƒ์„ฑํ•˜์ง€ ๋ชปํ•˜๋„๋ก ๋งŒ๋“ค๊ณ , getInstance() ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉํ•˜๋„๋ก ๊ตฌํ˜„ํ•œ๋‹ค) ๊ทธ๋ž˜์„œ ์ธ์Šคํ„ด์Šค๊ฐ€ ํ•„์š”ํ• ๋•Œ, ๋˜‘๊ฐ™์€ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค์ง€ ์•Š๊ณ  ๊ธฐ์กด์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. *์ธ์Šคํ„ด์Šค : ํด๋ž˜์Šค์˜ ํ˜„์žฌ ์ƒ์„ฑ๋œ ์˜ค๋ธŒ์ ํŠธ. ๊ฐ์ฒด ์žฅ์  ํ•œ๋ฒˆ์˜ new๋ฅผ ํ†ตํ•ด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๊ณ ์ •๋œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ์–ป๊ธฐ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„..
๋•ก๋•ก๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป
๐Ÿ€Greeny Dev๐Ÿ€