๋„์„œ ๐Ÿ“š

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๏ธโƒฃ ์ด๋ฆ„์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.์–ด๋–ค ํ•œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์ƒํ™ฉ์— ๋”ฐ๋ผ ์ „๋‹ฌ๋˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋‹ค๋ฅด๋‹ค๋ฉด, ํ•˜๋‚˜์˜ ์ƒ์„ฑ์ž๋กœ๋Š” ์ด๋ฅผ..