JAVA/Effective JAVA(89)
-
[์ดํํฐ๋ธ ์๋ฐ] Item01 ์๋ฒฝ๊ณต๋ต. ํ๋ผ์ด์จ์ดํธ ํจํด Flyweight ํจํด
item01. ์์ฑ์ ๋์ ์ ์ ํฉํฐ๋ฆฌ ๋ฉ์๋๋ฅผ ๊ณ ๋ คํ๋ผ. " p9. ๊ฐ์ ๊ฐ์ฒด๊ฐ ์์ฃผ ์์ฒญ๋๋ ์ํฉ์ด๋ผ๋ฉด ํ๋ผ์ด์จ์ดํธ ํจํด์ ์ฌ์ฉํ ์ ์๋ค." Flyweight Pattern ์ด๋? : ๊ฐ์ฒด๋ฅผ ๊ฐ๋ณ๊ฒ ๋ง๋ค์ด ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ์ค์ด๋ ํจํด์ผ๋ก ์์ฃผ ๋ณํ๋ ์์ฑ๊ณผ ๋ณํ์ง ์๋ ์์ฑ์ ๋ถ๋ฆฌํ๊ณ ์ฌ์ฌ์ฉํ์ฌ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ์ค์ผ ์ ์๋ค. https://velog.io/@hoit_98/%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8C%A8%ED%84%B4-Flyweight-%ED%8C%A8%ED%84%B4 [๋์์ธ ํจํด] Flyweight ํจํด Flyweight(ํ๋ผ์ด์จ์ดํธ) ํจํด โ ์ธ์คํด์ค๋ฅผ ๊ฐ๋ฅํ ํ ๊ณต์ ํด์ ์ฌ์ฉํจ์ผ๋ก์จ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ฝํ๋ ํจํด ๐ฟ ๋ฌธ์ ์ํฉ โ ๋ง์ธํฌ๋ํํธ ๊ฒ์์ ๋๋ฌด๋ฅผ ์ค์นํ๊ณ ..
2023.01.03 -
[์ดํํฐ๋ธ ์๋ฐ] Item01 ์๋ฒฝ๊ณต๋ต. ์ด๊ฑฐํ์ Enumeration
item01. ์์ฑ์ ๋์ ์ ์ ํฉํฐ๋ฆฌ ๋ฉ์๋๋ฅผ ๊ณ ๋ คํ๋ผ. "p9. ์ด๊ฑฐ ํ์ ์ ์ธ์คํดํธ๊ฐ ํ๋๋ง ๋ง๋ค์ด์ง์ ๋ณด์ฅํ๋ค." ์ด๊ฑฐ ํ์ ์ด๋? : ์๋ก ์ฐ๊ด๋ ์์์ ์งํฉ์ ์ ์ฅํ๋ ์๋ฃํ, ์์ ๋ชฉ๋ก์ ๋ด์ ์ ์๋ ๋ฐ์ดํฐ ํ์ ํ์ ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ์๋ฃํ์ผ๋ก ๊ฐ์ ์ ํํ ์ ์๋ค. ์ด๊ฑฐ ํ์ ์ ํน์ ํ ๋ณ์๊ฐ ๊ฐ์ง ์ ์๋ ๊ฐ์ ์ ํ ํ ์ ์๋ค. OrderStatus๋ผ๋ Enum ์ PREPARRING, SHIPPED, DELIVERING, DELIVERED ์ด๋ ๊ฒ ๊ฐ์ ์ ํ๋ค๋ฉด Order์์ OrderStatus ๊ฐ์ 4๊ฐ์ง ์ํ ๊ฐ ๋ง๊ณ ๋ค๋ฅธ ๊ฐ์ ์ ๋ ฅํ ์ ์๋๋ก ๊ฐ์ ์ ํํ ์ ์๋ค. ์ด๊ฑฐํ์ ์ ์ฌ์ฉํ์ง ์๊ณ , ๊ธฐ๋ณธ ์๋ฃํ์ผ๋ก ์ด๋ ๊ฒ ์ง์ ํด์ฃผ๋ฉด 200 ๋ฑ ๋ค๋ฅธ ๊ฐ์ด ๋ค์ด๊ฐ ์ ์๊ธฐ ๋๋ฌธ์ ..
2023.01.03 -
[์ดํํฐ๋ธ ์๋ฐ] ํ๋ผ์ด์จ์ดํธ ํจํด flyWeight pattern
ํ๋ผ์ด์จ์ดํธ ํจํด Flyweight Pattern - ๋์์ธ ํจํด ์ค ํ๋๋ก ๊ฐ์ฒด๋ฅผ ์ฌ์ฌ์ฉํ๊ธฐ ์ํ ๋ฐฉ๋ฒ ์ค ํ๋ - ๊ฐ์ฒด๋ฅผ ๊ฐ๋ณ๊ฒ ๋ง๋ค์ด ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ์ค์ด๊ธฐ ์ํ ํจํด - ์์ฃผ ๋ณํ๋ ์์ฑ(๋๋ ์ธ์ ์ธ ์์ฑ)๊ณผ ๋ณํ์ง ์๋ ์์ฑ(๋๋ ๋ด์ ์ธ ์์ฑ)์ ๋ถ๋ฆฌํ๊ณ ์ฌ์ฌ์ฉํ์ฌ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ์ค์ผ ์ ์๋ค. ํจ์ ์ ์ฉ ์ ํจ์ ์ ์ฉ ํ fontsize, fontfamliy๋ฅผ ๋ฌถ์ด์ Font๋ผ๋ ํด๋์ค๋ฅผ ๋ง๋ค์๋ค. ๊ทธ๋ฆฌ๊ณ fontFactory์ getFont ๋ฉ์๋๋ฅผ ๋ง๋ค์ด์ ๋ฐ๋ณต๋๋ ๊ฐ์ ์ฌ์ฌ์ฉํ ์ ์๋๋ก ํ๋ค. ์ด๋ ์ ์ ํฉํฐ๋ฆฌ ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ ํ ์๋ ์๋ค. ํ๋ผ์ด์จ์ดํธ ํจํด์ ๋ฐ๋ก ๋์์ธํจํด ๊ฐ์์์ ์๊ฐ๋ฅผ ํ๊ณ ์๋ค๊ณ ํด์ ๋ค์ ํ๋ฒ ๊ณต๋ถ๋ ํด์ผ๊ฒ ๋ค. ๊ทธ๋ฅ ์ฌ๊ธฐ์๋ ๊ฐ์ฒด๋ฅผ ์ฌ์ฌ์ฉํ๊ธฐ ์ํ ๋ฐฉ๋ฒ ์ค..
2022.08.31 -
[์ดํํฐ๋ธ ์๋ฐ] Enum ์ด๊ฑฐ ํ์
์ด๊ฑฐ ํ์ Enumeration - ์์ ๋ชฉ๋ก์ ๋ด์ ์ ์๋ ๋ฐ์ดํฐ ํ์ - ํน์ ํ ๋ณ์๊ฐ ๊ฐ์ง ์ ์๋ ๊ฐ์ ์ ํํ ์ ์๋ค. - > Type-safe ๋ฅผ ๋ณด์ฅํ ์ ์๋ค. (๋ณ์๊ฐ ๊ฐ์ง ์ ์๋ ๊ฐ์ ์ ํํด์ ๋ค๋ฅธ ๊ฐ์ ์ ๋ ฅ ๋ชปํ๊ธฐ ๋๋ฌธ) - ์ฑ๊ธํค ํจํด์ ๊ตฌํํ ๋ ์ฌ์ฉํ๊ธฐ๋ ํ๋ค. ์ง๋ฌธ1) ํน์ enum ํ์ ์ด ๊ฐ์ง ์ ์๋ ๋ชจ๋ ๊ฐ์ ์ํํ๋ฉฐ ์ถ๋ ฅํ๋ผ. -> Enum์ values() ๋ฉ์๋๋ฅผ ์๋์ง ๋ฌผ์ด๋ณด๋ ์ง๋ฌธ ์ง๋ฌธ2) enum์ ์๋ฐ์ ํด๋์ค์ฒ๋ผ ์์ฑ์, ๋ฉ์๋, ํ๋๋ฅผ ๊ฐ์ง ์ ์๋๊ฐ? ๋น์ฐํ ์ฌ์ฉํ ์ ์๋ค. ์์ ์์๋ ๋์ถฉ number๋ผ๋ ํ๋๋ฅผ ๊ฐ์ง๊ณ , ์์ฑ์๋ฅผ ์์ฑํ๋ค. ์ง๋ฌธ3) enum์ ๊ฐ์ == ์ฐ์ฐ์๋ก ๋์ผ์ฑ์ ๋น๊ตํ ์ ์๋๊ฐ? equals๋ณด๋ค ==๋ฅผ ๊ถ์ฅํ๋ ์ด์ ๋ ์ด..
2022.08.31 -
[์ดํํฐ๋ธ ์๋ฐ] Item1. ์์ฑ์ ๋์ ์ ์ ํฉํฐ๋ฆฌ ๋ฉ์๋๋ฅผ ๊ณ ๋ คํ๋ผ.
2์ฅ. ๊ฐ์ฒด ์์ฑ๊ณผ ํ๊ดด ์์ดํ 1. ์์ฑ์ ๋์ ์ ์ ํฉํฐ๋ฆฌ ๋ฉ์๋๋ฅผ ๊ณ ๋ คํ๋ผ. ๊ธฐ๋ณธ์ ์ผ๋ก ํด๋ผ์ด์ธํธ๊ฐ ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ์ป๋ ๋ฐฉ๋ฒ ์ค ํํ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ public ์์ฑ์์ด๋ค. ๋ค๋ฅธ ๋ฐฉ๋ฒ ์ค ๊ผญ ์์๋ฌ์ผ ํ๋ ๋ฐฉ๋ฒ์ ์ ์ ํํฐ๋ฆฌ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด๋ค. ํด๋์ค๋ ์์ฑ์์ ๋ณ๋๋ก ์ ์ ํฉํฐ๋ฆฌ ๋ฉ์๋(static factory method)๋ฅผ ์ ๊ณตํ ์ ์๋ค. (ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ๋ฐํํ๋ ๋จ์ํ ์ ์ ๋ฉ์๋) -> Boolean์ valueof() ๋ฉ์๋์์ ๋ณผ ์ ์๋ฏ์ด ๊ธฐ๋ณธ ํ์ ์ธ boolean b ๊ฐ์ ๋ฐ์ Boolean ๊ฐ์ฒด ์ฐธ์กฐ๋ก ๋ณํํด์ค๋ค. โ๏ธ ์ฃผ์ ์ ์ ํฉํฐ๋ฆฌ ๋ฉ์๋๋ ๋์์ธ ํจํด์ ํฉํฐ๋ฆฌ ๋ฉ์๋์๋ ๋ค๋ฅธ ๊ฒ์ผ๋ก ํท๊ฐ๋ฆฌ๋ฉด ์๋๋ค. ํด๋์ค๋ ํด๋ผ์ด์ธํธ์๊ฒ public ์์ ์ ๋์ ๋..
2022.08.31