Programing_Java
[Project] instanceof ๋์ HashMap? ์ฅ๋ฐ๊ตฌ๋ ๊ตฌํ์์ ๋ฐฐ์ด ๊ฐ์ฒด์งํฅ์ ๋ฐฉํฅ ๋ณธ๋ฌธ
[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, ๋คํ์ฑ, ์ ๋ต ํจํด ๊ฐ์ ๊ฐ์ฒด์งํฅ์ ์ ๊ทผ์ ์ฐ์ ๊ณ ๋ คํด์ผํจ
• ํต์ฌ **"ํ์ ์ ๊ตฌ๋ถํ์ง ๋ง๊ณ , ์ญํ ์ ์์ํ๋ผ"**๋ ๊ฒ