๐Ÿ”  ํ”„๋กœ๊ทธ๋ž˜๋ฐ์–ธ์–ด

    Java :: ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

    Java :: ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

    ํ”„๋กœ๊ทธ๋žจ ์˜ค๋ฅ˜ ํ”„๋กœ๊ทธ๋žจ ์˜ค๋ฅ˜์˜ ์ข…๋ฅ˜ ์ปดํŒŒ์ผ ์—๋Ÿฌ : ์ปดํŒŒ์ผํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ : ์‹คํ–‰ํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ ๋…ผ๋ฆฌ์  ์—๋Ÿฌ : ์‚ฌ์šฉ์ž์˜ ์ž‘์„ฑ ์˜๋„์™€๋Š” ๋‹ค๋ฅธ ๋™์ž‘ ์ˆ˜ํ–‰ ์˜ˆ์™ธ์ฒ˜๋ฆฌ ์ •์˜์™€ ๋ชฉ์  Java ์˜ ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ - ์—๋Ÿฌ(Error)์™€ ์˜ˆ์™ธ(Exception) ์—๋Ÿฌ (Error) : ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ์— ์˜ํ•ด์„œ ์ˆ˜์Šต๋  ์ˆ˜ ์—†๋Š” ์‹ฌ๊ฐํ•œ ์˜ค๋ฅ˜ ์˜ˆ์™ธ (Exception) : ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ์— ์˜ํ•ด์„œ ์ˆ˜์Šต๋  ์ˆ˜ ์žˆ๋Š” ๋‹ค์†Œ ๋ฏธ์•ฝํ•œ ์˜ค๋ฅ˜ ์˜ˆ์™ธ์ฒ˜๋ฆฌ ์ •์˜์™€ ๋ชฉ์  ์ •์˜ : ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์‹œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์˜ˆ์™ธ์˜ ๋ฐœ์ƒ์— ๋Œ€๋น„ํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑ ๋ชฉ์  : ํ”„๋กœ๊ทธ๋žจ์˜ ๋น„์ •์ƒ ์ข…๋ฃŒ๋ฅผ ๋ง‰๊ณ , ์ •์ƒ ์‹คํ–‰์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ ์˜ˆ์™ธ ํด๋ž˜์Šค์˜ ๊ณ„์ธต๊ตฌ์กฐ RuntimeException ํด๋ž˜์Šค๋“ค : ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ์‹ค์ˆ˜๋กœ ๋ฐœ์ƒํ•˜๋Š” ์˜ˆ์™ธ Except..

    Java :: ์–ด๋…ธํ…Œ์ด์…˜(Annotation)

    Java :: ์–ด๋…ธํ…Œ์ด์…˜(Annotation)

    ์–ด๋…ธํ…Œ์ด์…˜(Annotation) ์ฃผ์„์ฒ˜๋Ÿผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์œผ๋ฉฐ, ์œ ์šฉํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณต @Test // ์ด ๋ฉ”์†Œ๋“œ๊ฐ€ ํ…Œ์ŠคํŠธ ๋Œ€์ƒ์ž„์„ ํ…Œ์ŠคํŠธ ํ”„๋กœ๊ทธ๋žจ์—๊ฒŒ ์•Œ๋ฆผ ! public void method() { ... } ํ‘œ์ค€ ์–ด๋…ธํ…Œ์ด์…˜ Java ์—์„œ ์ œ๊ณตํ•˜๋Š” ์–ด๋…ธํ…Œ์ด์…˜ @Override ์˜ค๋ฒ„๋ผ์ด๋”ฉ์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํ–ˆ๋Š”์ง€ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ฒดํฌํ•˜๊ฒŒ ํ•จ ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•  ๋•Œ ๋ฉ”์†Œ๋“œ ์ด๋ฆ„์„ ์ž˜๋ชป ์ ๋Š” ์‹ค์ˆ˜ ๋“ฑ ๋ฐœ์ƒ ๊ฐ€๋Šฅ class Parent { void parentMethod() {} } class Child extends Parent { void parentmethod() {} } ์˜ค๋ฒ„๋ผ์ด๋”ฉ ํ•˜๋ ค๊ณ  ํ–ˆ์œผ๋‚˜ ์‹ค์ˆ˜๋กœ ์ด๋ฆ„ ์ž˜๋ชป ์ ์—ˆ์„ ๋•Œ ! class Child extends Parent { @Override void ..

    Java :: ์—ด๊ฑฐํ˜• - Enumeration

    Java :: ์—ด๊ฑฐํ˜• - Enumeration

    ์—ด๊ฑฐํ˜•(Enumeration) ๊ด€๋ จ๋œ ์ƒ์ˆ˜๋“ค์„ ๊ฐ™์ด ๋ฌถ์–ด ๋†“์€ ๊ฒƒ Java ๋Š” ํƒ€์ž…์— ์•ˆ์ „ํ•œ ์—ด๊ฑฐํ˜•์„ ์ œ๊ณต class Menu { enum CoffeeMenu { ESPRESSO, AMERICANO, LATTE } enum TeaMenu { GREEN_TEA, YUTU_TEA } CoffeeMenu coffeeMenu; TeaMenu teaMenu; } ์•ˆ์ „ํ•œ ์—ด๊ฑฐํ˜•์ด๋ž€ ๋ฌด์Šจ ์˜๋ฏธ์ผ๊นŒ? ์˜ˆ๋ฅผ ๋“ค์–ด ์•„๋ž˜์ฒ˜๋Ÿผ ์—ด๊ฑฐํ˜•์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ƒ์ˆ˜๋กœ ๊ด€๋ฆฌํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋ณด์ž. class Menu { static int ESPRESSO = 0; static int AMERICANO = 1; static int LATTE = 2; static int GREEN_TEA = 0; static int YUJU_TEA = 1; } ..

    Java :: ํŒฉํ† ๋ฆฌ(Factory) ๋ฉ”์†Œ๋“œ ํŒจํ„ด

    Java :: ํŒฉํ† ๋ฆฌ(Factory) ๋ฉ”์†Œ๋“œ ํŒจํ„ด

    ํŒฉํ† ๋ฆฌ(Factory) ๋ฉ”์†Œ๋“œ ํŒจํ„ด ๊ฐ์ฒด ์ƒ์„ฑ ์ฒ˜๋ฆฌ๋ฅผ ์„œ๋ธŒ ํด๋ž˜์Šค๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ์ฒ˜๋ฆฌํ•˜๋„๋ก ์บก์Šํ™”ํ•˜๋Š” ํŒจํ„ด ํŠน์ • ์ž…๋ ฅ๊ฐ’์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•  ๋•Œ, ๋ถ„๊ธฐ์— ๋”ฐ๋ผ์„œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ํŒฉํ† ๋ฆฌ ๋ฉ”์†Œ๋“œ ํŒจํ„ด์„ ์ ์šฉํ•˜๋ฉด ์ข‹๋‹ค. ์กฐ๊ฑด์— ๋”ฐ๋ผ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ณต์žฅ์„ ๋งŒ๋“œ๋Š” ๋Š๋‚Œ ! ์žฅ์  ๊ฐ์ฒด๊ฐ„์˜ ๊ฒฐํ•ฉ๋„๊ฐ€ ๋‚ฎ์•„์ง€๊ณ  ์œ ์ง€๋ณด์ˆ˜์— ์šฉ์ดํ•ด์ง ๊ฐ์ฒด๋“ค์„ ํ•œ ๊ณณ์—์„œ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋จ ๋ฉ”์†Œ๋“œ๋กœ ์ž‘๋™ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฆฌํ„ด ๊ฐ’์œผ๋กœ ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์Œ ๋‹จ์  ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๋งŽ์€ ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•˜๊ฒŒ ๋  ์ˆ˜ ์žˆ์Œ ์˜ˆ์‹œ ์ฝ”๋“œ ํŒฉํ† ๋ฆฌ ๋ฉ”์†Œ๋“œ ํŒจํ„ด ์ ์šฉ ์ „ abstract class Item { } class OrangeJuice extends Item { OrangeJuice() { System.out.println("์˜ค๋ Œ์ง€์ฅฌ์Šค ์ƒ์„ฑ"..

    Java :: ์‹ฑ๊ธ€ํ†ค(Singleton) ํŒจํ„ด

    Java :: ์‹ฑ๊ธ€ํ†ค(Singleton) ํŒจํ„ด

    ์‹ฑ๊ธ€ํ†ค(Singleton) ํŒจํ„ด ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ํ•˜๋‚˜์ž„์„ ๋ณด์žฅํ•˜๊ณ , ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์ „์—ญ์ ์ธ ์ ‘๊ทผ์  ์ œ๊ณต ! ๋”ฑ ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด์Šค๋งŒ ์ƒ์„ฑ. ์ƒ์„ฑ๋œ ์ธ์Šคํ„ด์Šค๋ฅผ ์–ด๋””์„œ๋“  ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค. ์‹ค์ œ๋กœ ์ƒ์„ฑ๋˜๋Š” ์ธ์Šคํ„ด์Šค๋Š” ํ•˜๋‚˜ ! (๊ฐ์ฒด ์ƒ์„ฑ์„ ํ•œ๋ฒˆ์œผ๋กœ ์ œํ•œ) ์ƒ์„ฑ์ž๊ฐ€ ๋˜ ํ˜ธ์ถœ๋˜์–ด๋„ ์ด๋ฏธ ์ƒ์„ฑ๋œ ์ธ์Šคํ„ด์Šค๋ฅผ ๋ฆฌํ„ดํ•ด์ฃผ๋Š” ๋ฐฉ์‹. ์žฅ์  ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„ ๋ฐฉ์ง€ ์‹ฑ๊ธ€ํ†ค ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค๋ฅธ ์ธ์Šคํ„ด์Šค ๊ฐ„์— ๋ฐ์ดํ„ฐ ๊ณต์œ ๊ฐ€ ์‰ฌ์›€ ์˜ค์ง ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒƒ์„ ๋ณด์ฆํ•˜๊ธฐ์— ๊ฐœ๋ฐœ ์‹œ ์‹ค์ˆ˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Œ ๋‹จ์  ์ „์—ญ๋ณ€์ˆ˜๋ณด๋‹ค ์‚ฌ์šฉํ•˜๊ธฐ ๋ถˆํŽธ ์‹ฑ๊ธ€ํ†ค ์—ญํ• ์ด ์ปค์ง€๋ฉด ๊ฒฐํ•ฉ๋„๊ฐ€ ๋†’์•„์ ธ ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„์›์น™์—์„œ ์–ด๊ธ‹๋‚  ์ˆ˜ ์žˆ์Œ ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ ๋™๊ธฐํ™” ์ฒ˜๋ฆฌ๋ฅผ ํ•˜์ง€ ์•Š์œผ๋ฉด ์ปจํŠธ๋กค์ด ์–ด๋ ค์›€ ์ธ์Šคํ„ด์Šค์˜ ํŒŒ๊ดด ์‹œ์ ์„ ์ปจํŠธ๋กค ํ•˜๊ธฐ ์–ด๋ ค์›€ ์˜ˆ์‹œ ์ฝ”๋“œ..

    Java :: ๋””์ž์ธ ํŒจํ„ด

    Java :: ๋””์ž์ธ ํŒจํ„ด

    ๋””์ž์ธ ํŒจํ„ด ๋””์ž์ธ ํŒจํ„ด์ด๋ž€? ์„ค๊ณ„ ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ•ด๋‹ต์„ ๋ฌธ์„œํ™” ํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ์•ˆํ•œ ํ˜•์‹ ๋ฐ˜๋ณต๋˜๋Š” ํŒจํ„ด์˜ ์›๋ฆฌ์— ๋Œ€ํ•œ ๊ฐœ๋…์„ ๊ณตํ•™์ ์ธ ์ธก๋ฉด์—์„œ ๋„์ž…ํ•œ ๊ฒƒ ํŠน์ • ์ฝ”๋“œ์˜ ์ผ๋ถ€๋ถ„์ด ์•„๋‹˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ฒ˜๋Ÿผ ํ”„๋กœ๊ทธ๋žจ์— ๋ถ™์—ฌ๋„ฃ์„ ์ˆ˜ ์—†์Œ ๋””์ž์ธ ํŒจํ„ด์„ ๋„์ž…ํ•˜๋Š” ๊ฒƒ์ด ํ•ด๋‹ต์ด ์•„๋‹ˆ๋‹ค. ์ž˜๋ชป ๋„์ž…ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜๋„ ์žˆ์Œ ์žฅ์  ํ”„๋กœ๊ทธ๋žจ ์ „์ฒด ๋ผ์ธ์„ ์ฝ์ง€ ์•Š์•„๋„ ์‰ฝ๊ฒŒ ์ธ์‹ํ•˜๊ณ  ์š”์  ํŒŒ์•… ๊ฐ€๋Šฅ ์ถ”์ƒ์ ์ธ ์ˆ˜์ค€์—์„œ ๋‹ค๋ฅธ ํŒ€์›๋“ค๊ณผ ์˜์‚ฌ์†Œํ†ต ํšจ๊ณผ์ ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ์Œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด, ๊ฐœ๋ฐœ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์— ๊ด€๊ณ„ ์—†์ด ์žฌ์‚ฌ์šฉ ๋ฐ ํ™•์žฅ ๊ฐ€๋Šฅ GoF - Gang of Four ๊ฐ์ฒด์ง€ํ–ฅ ๋ถ„์•ผ์˜ ๋ฌธ์ œ์ ์„ ๋ถ„์„ํ•ด 24๊ฐœ ํŒจํ„ด์œผ๋กœ ๋ถ„๋ฅ˜ ๊ธฐ์กด ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„ ์‹œ ๋ฐœ์ƒํ–ˆ๋˜ ๋ฌธ์ œ๋ฅผ ์นดํƒˆ๋กœ๊ทธํ™” ํ•˜์—ฌ ํŒจํ„ด ์ •๋ฆฌ ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์˜ ์ง„ํ–‰์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์š”์†Œ๋Š” ํ†ต์ผ๋œ ..

    Java :: ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ ์›์น™

    Java :: ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ ์›์น™

    DRY - Donโ€™t Repeat Yourself ๊ฐ™์€ ์ผ์„ ๋‘ ๋ฒˆ ๋ฐ˜๋ณตํ•ด์„œ ํ•˜์ง€ ์•Š์Œ ๊ฐ™์€ ์ฝ”๋“œ๊ฐ€ ๋‘ ๋ฒˆ ์ด์ƒ ์‚ฌ์šฉ๋  ๊ฒฝ์šฐ์—” ์žฌ์‚ฌ์šฉ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ปค์ง€๋ฉด ์ž‘์€ ์กฐ๊ฐ์œผ๋กœ ๋‚˜๋ˆ„์–ด ์ฝ”๋“œ๋ฅผ ์žฌ์‚ฌ์šฉ ์ฝ”๋“œ ์˜์กด์„ฑ์— ์˜ํ•œ ๋ณต์žก๋„๊ฐ€ ์ค„์–ด๋“ค์–ด ์œ ์ง€๋ณด์ˆ˜๋น„์šฉ์ด ์ ˆ๊ฐ๋จ ๋ฐ˜๋Œ€ WET : We Enjoy Typing KISS - Keep It Simple, Stupid ์ฝ”๋“œ๋Š” ๊ฐ€๊ธ‰์  ๋‹จ์ˆœ ํ•˜๊ฒŒ ๊ตฌํ˜„ํ•ด์•ผ ํ•จ ๋””์ž์ธ์—์„œ ๋ณด๋‹ค ๊ฐ„๋‹จํ•˜๊ณ  ์•Œ๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“œ๋Š” ํŽธ์ด ์ข‹์Œ ํฐ ํ”„๋กœ์ ํŠธ๋ฅผ ๋ณต์žกํ•˜๊ฒŒ ๋””์ž์ธํ•ด์„œ ๊ตฌํ˜„ํ•˜๋Š” ๊ฑด ํ”„๋กœ์ ํŠธ ์ดํ•ด๋„๊ฐ€ ๋ถ€์กฑํ•˜๋‹ค๋Š” ๊ฒƒ ๋น„์ „๋ฌธ๊ฐ€์—๊ฒŒ ํ”„๋กœ์ ํŠธ๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ์ œ๋Œ€๋กœ ์ดํ•ดํ–ˆ๋‹ค๊ณ  ๋ณด๊ธฐ ํž˜๋“ฌ YAGNI - You arenโ€™t gonna need it ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ๊ฐ„์ฃผํ•  ๋•Œ๊นŒ์ง€ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์Œ ์‹ค์ œ๋กœ ํ•„..

    Java :: ๊ฐ์ฒด์ง€ํ–ฅ 5๋Œ€ ์„ค๊ณ„ ์›์น™ - SOLID

    Java :: ๊ฐ์ฒด์ง€ํ–ฅ 5๋Œ€ ์„ค๊ณ„ ์›์น™ - SOLID

    ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„ 5๋Œ€์›์น™ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๊ณ  ์‘์ง‘๋„๋ฅผ ๋†’์ผ ์ˆ˜ ์žˆ๋Š”, ๊ฐ์ฒด์ง€ํ–ฅ์  ์„ค๊ณ„ ๊ด€์ ์—์„œ ์ง€์ผœ์•ผ ํ•  ์›์น™๋“ค์„ ์žฌ์ •๋ฆฝ ! SOLID SRP : Single Responsibility Principle ๋‹จ์ผ ์ฑ…์ž„ ์›์น™ OCP : Open Closed Principle ๊ฐœ๋ฐฉ ํ์‡„ ์›์น™ LSP : Liskov Substitution Principle ๋ฆฌ์Šค์ฝ”ํ”„ ์น˜ํ™˜ ์›์น™ ISP : Interface Segregation Principle ์ธํ„ฐํŽ˜์ด์Šค ๋ถ„๋ฆฌ ์›์น™ DIP : Dependency Inversion Principle ์˜์กด์„ฑ ์—ญ์ „ ์›์น™ SRP ๋‹จ์ผ ์ฑ…์ž„ ์›์น™ ํ•˜๋‚˜์˜ ์—ญํ• ์„ ์ฑ…์ž„์ง€๋Š” ์ฝ”๋“œ๋ฅผ ํ•จ๊ป˜ ๋ฌถ์–ด์ฃผ๋Š” ๊ฒƒ โ†’ ์‘์ง‘๋„ ์„œ๋กœ ๋‹ค๋ฅธ ์—ญํ• ์„ ๋งก์€ ์ฝ”๋“œ๋Š” ๋ถ„๋ฆฌํ•˜์—ฌ์•ผ ํ•œ๋‹ค. ๋ชจ๋“  ํด๋ž˜์Šค๋Š” ๋‹จ ํ•˜๋‚˜์˜ ์ฑ…์ž„๋งŒ์„ ๊ฐ€์ ธ์•ผ ํ•จ..