Item 3. private ์์ฑ์๋ ์ด๊ฑฐ ํ์
์ผ๋ก ์ฑ๊ธํด์์ ๋ณด์ฆํ๋ผ1. ์ฑ๊ธํด(Singleton)์ด๋?์ฑ๊ธํด(singleton)์ด๋ ์ธ์คํด์ค๋ฅผ ์ค์ง ํ๋๋ง ์์ฑํ ์ ์๋ ํด๋์ค๋ฅผ ๋งํ๋ค. ์ฑ๊ธํด์ ์ ํ์ ์ธ ์๋ก๋ ์ค๊ณ ์ ์ ์ผํด์ผ ํ๋ ์์คํ
์ปดํฌ๋ํธ๋ ๋ฌด์ํ(stateless) ๊ฐ์ฒด(Spring bean component)๊ฐ ์๋ค.์ฑ๊ธํด ๊ฐ์ฒด์๋ ๋จ์ ์ด ์๋๋ฐ, ๋ฐ๋ก ์ฑ๊ธํด ๊ฐ์ฒด๋ฅผ ์ด์ฉํ๋ ํด๋ผ์ด์ธํธ๋ฅผ ํ
์คํธํ๊ธฐ ์ด๋ ต๋ค๋ผ๋ ๊ฒ์ด๋ค. ๋ง์ผ ํด๋น ํ์
์ `interface`๋ก ์ ์ํ ๋ค์ ๊ทธ `interface `๊ตฌํํด์ ๋ง๋ ์ฑ๊ธํด์ธ ๊ฒฝ์ฐ,์ฑ๊ธํด ์ธ์คํด์ค๋ฅผ `mock(๊ฐ์ง ๊ฐ์ฒด)`์ผ๋ก ๊ตฌํํ์ฌ ๋์ฒดํ ์ ์์ง๋ง, ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ์๋ ํ
์คํธ ํ๋๋ฐ์ ์ด๋ ค์์ ๊ฒช์ ์ ์๋ค. 2. ์ฑ๊ธํด์ ๋ง๋๋ ์ธ..
๋์ ๐
์ด ๊ธ์ ๊ณต๋ถ๋ฅผ ํ๋ฉด์ ์๊ฒ ๋ ๋ด์ฉ๋ค์ ๊ธฐ๋กํ๋ ๊ธ ์
๋๋ค. ์ค๋ฅ๋ ๊ณ ์ณ์ผ ํ ์ฌํญ๋ค์ด ์๋ค๋ฉด ์ง์ ๋ถํ๋๋ฆฝ๋๋ค! 1. ์์ฑ์์ ์ ์ ํฉํฐ๋ฆฌ ๋ฉ์๋์ ํ๊ณ๐ค ์์ฑ์์ ์ ์ ํฉํฐ๋ฆฌ ๋ฉ์๋๊ฐ ๊ฐ์ง๊ณ ์๋ ์ ์ฝ์ผ๋ก ์ธํด Builder ํจํด์ด ํ์ํ๋ค!๊ฐ์ฒด๋ฅผ ์์ฑํ ๋, ์ ํ์ ๋งค๊ฐ๋ณ์๊ฐ ๋ง์ ๊ฒฝ์ฐ ์ ์ ํ ๋์ํ๊ธฐ๊ฐ ์ด๋ ต๋ค.์๋ฅผ ๋ค์ด `์์ ์ฑ๋ถ` ํด๋์ค์ `1ํ ์ ๊ณต๋`, `์นผ๋ก๋ฆฌ`, `์ด ์ง๋ฐฉ`, `ํธ๋์ค ์ง๋ฐฉ`, `ํฌํ ์ง๋ฐฉ`, `๋จ๋ฐฑ์ง`, `๋ํธ๋ฅจ` ์ด๋ผ๋ ๋ฉค๋ฒ ๋ณ์๊ฐ ์๋ค๊ณ ๊ฐ์ ํ์.public class NutritionFacts { private final int servingSize; private final int calories; private final int transF..
์ด ๊ธ์ ๊ณต๋ถ๋ฅผ ํ๋ฉด์ ์๊ฒ ๋ ๋ด์ฉ๋ค์ ๊ธฐ๋กํ๋ ๊ธ ์
๋๋ค. ์ค๋ฅ๋ ๊ณ ์ณ์ผ ํ ์ฌํญ๋ค์ด ์๋ค๋ฉด ์ง์ ๋ถํ๋๋ฆฝ๋๋ค!๋ง์ง๋ง ์์ : 2024.05.27โ
1. ์ ์ ํฉํฐ๋ฆฌ ๋ฉ์๋ (static factory method)๋?ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ๋ฐํํ๋ ์ ์ ๋ฉ์๋(static method)๋ฅผ ๋งํ๋ค.๋ํ์ ์ผ๋ก java์ Wrapper class๋ค์ .valueOf()๋ผ๋ ๋ฉ์๋๋ค์ ์ ๊ณตํ๊ณ ์๋ค.Boolean.valueOf(), String.valueOf()์ด ๊ทธ ๋ํ์ ์ธ ์์์ด๋ฉฐ, ํด๋น ๋ฉ์๋๋ฅผ ํธ์ถํ๋ฉด Wrapper class์ ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ ์๋ค.โ
2. ์ ์ ํฉํฐ๋ฆฌ ๋ฉ์๋์ ์ฅ์ 1๏ธโฃ ์ด๋ฆ์ ๊ฐ์ง ์ ์๋ค.์ด๋ค ํ ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ์ํฉ์ ๋ฐ๋ผ ์ ๋ฌ๋๋ ๋งค๊ฐ๋ณ์๊ฐ ๋ค๋ฅด๋ค๋ฉด, ํ๋์ ์์ฑ์๋ก๋ ์ด๋ฅผ..