Programing_Java

[Project] instanceof ๋Œ€์‹  HashMap? ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๊ตฌํ˜„์—์„œ ๋ฐฐ์šด ๊ฐ์ฒด์ง€ํ–ฅ์˜ ๋ฐฉํ–ฅ ๋ณธ๋ฌธ

๐Ÿญ Projects

[Project] instanceof ๋Œ€์‹  HashMap? ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๊ตฌํ˜„์—์„œ ๋ฐฐ์šด ๊ฐ์ฒด์ง€ํ–ฅ์˜ ๋ฐฉํ–ฅ

Joyfullyever 2025. 4. 9. 23:38

โœ” ๋ฌธ์ œ ์ƒํ™ฉ

์žฅ๋ฐ”๊ตฌ๋‹ˆ ์‹œ์Šคํ…œ์„ ๊ตฌํ˜„ํ•˜๋ฉด์„œ ๋‹ค์–‘ํ•œ ์ƒํ’ˆ(Book, Electronics ๋“ฑ)์„ ํ•˜๋‚˜์˜ ๋ฆฌ์ŠคํŠธ์— ๋‹ด์•„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ–ˆ์Œ
์ฒ˜์Œ์—” ์•„๋ž˜์ฒ˜๋Ÿผ instanceof๋กœ ํƒ€์ž…์„ ๊ตฌ๋ถ„ํ•ด์„œ ์ฒ˜๋ฆฌ

for (Object item : cart) {
    if (item instanceof Book) {
        // Book ๊ด€๋ จ ๋กœ์ง
    } else if (item instanceof Electronics) {
        // Electronics ๊ด€๋ จ ๋กœ์ง
    }
}

 

๋™์ž‘์€ ํ•˜์ง€๋งŒ ํƒ€์ž…๋งˆ๋‹ค ๋ถ„๊ธฐ๋ฌธ์ด ๋Š˜์–ด๋‚˜๊ณ , ์ƒˆ๋กœ์šด ์ƒํ’ˆ ํƒ€์ž…์ด ์ถ”๊ฐ€๋ ์ˆ˜๋ก if-else๋‚˜ switch๊ฐ€ ๊ณ„์† ๋ณต์žกํ•ด์ง

 

โœ” ๊ฐœ์„  ๋ฐฉํ–ฅ : HashMap์„ ํ™œ์šฉํ•œ ๊ตฌ์กฐ๋กœ ์ „ํ™˜

๋‹คํ˜•์„ฑ๊ณผ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ํ™œ์šฉํ•ด์„œ HashMap<String, CartItem> ํ˜•ํƒœ๋กœ ๋ฆฌํŒฉํ† ๋ง

Map<String, CartItem> cartMap = new HashMap<>();
cartMap.put("book-123", new Book(...));
cartMap.put("elec-456", new Electronics(...));

ํƒ€์ž… ์ฒดํฌ ์—†์ด๋„ ํ†ตํ•ฉ์ ์œผ๋กœ ์žฅ๋ฐ”๊ตฌ๋‹ˆ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ณ , ์ƒˆ๋กœ์šด ์ƒํ’ˆ์ด ์ถ”๊ฐ€๋˜์–ด๋„ ๊ตฌ์กฐ ์ž์ฒด๋ฅผ ๋ฐ”๊ฟ€ ํ•„์š”๊ฐ€ ์—†์Œ

 

โœ” ์™œ instanceof๋ฅผ ํ”ผํ•ด์•ผ ํ• ๊นŒ?

• ์ƒˆ๋กœ์šด ํƒ€์ž…์ด ์ถ”๊ฐ€๋˜๋ฉด ๊ธฐ์กด ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•ด์•ผ ํ•จ → OCP(Open-Closed Principle) ์œ„๋ฐฐ

• ๋‹คํ˜•์„ฑ์„ ํ™œ์šฉํ•˜์ง€ ๋ชปํ•˜๊ณ , ํƒ€์ž… ์˜์กด์  ์ฝ”๋“œ๊ฐ€ ๋Š˜์–ด๋‚จ

• ์œ ์ง€๋ณด์ˆ˜์„ฑ์ด ๋‚ฎ์•„์ง€๊ณ , ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋„ ๋ณต์žกํ•ด์ง

 

โœ” ๊ทธ๋Ÿผ ์–ธ์ œ instanceof๋ฅผ ์จ๋„ ๋ ๊นŒ?

• ์ •๋ง ๊ฐ„๋‹จํ•œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋‚˜, ์ผํšŒ์„ฑ ๋กœ์ง

• ๋‹คํ˜•์„ฑ์„ ์„ค๊ณ„ํ•˜๊ธฐ ์–ด๋ ค์šด ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€์˜ ํ†ตํ•ฉ ์ƒํ™ฉ ๋“ฑ

๊ทธ๋งˆ์ €๋„ ์ „๋žต ํŒจํ„ด์ด๋‚˜ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์šฐํšŒ ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ๊ฐ€ ๋Œ€๋ถ€๋ถ„์ด๋‹ค.

 

โœ… ๋งˆ๋ฌด๋ฆฌ ์ •๋ฆฌ

• instanceof๋Š” ๋‹น์žฅ์€ ์‰ฌ์›Œ ๋ณด์ด์ง€๋งŒ, ์‹œ๊ฐ„์ด ์ง€๋‚ ์ˆ˜๋ก ์ฝ”๋“œ๊ฐ€ ์ ์  ๋ฌด๊ฑฐ์›Œ์ง

• ์œ ์—ฐํ•˜๊ณ  ํ™•์žฅ์„ฑ ์žˆ๋Š” ๊ตฌ์กฐ๋ฅผ ์›ํ•œ๋‹ค๋ฉด HashMap, ๋‹คํ˜•์„ฑ, ์ „๋žต ํŒจํ„ด ๊ฐ™์€ ๊ฐ์ฒด์ง€ํ–ฅ์  ์ ‘๊ทผ์„ ์šฐ์„  ๊ณ ๋ คํ•ด์•ผํ•จ

• ํ•ต์‹ฌ **"ํƒ€์ž…์„ ๊ตฌ๋ถ„ํ•˜์ง€ ๋ง๊ณ , ์—ญํ• ์„ ์œ„์ž„ํ•˜๋ผ"**๋Š” ๊ฒƒ