E D R , A S I H C RSS

Lazy Initialization

Lazy Initialization

ExplicitInitialization์˜ ๋ชจ๋“  ์žฅ์ ์€ ๋‹จ์ ์œผ๋กœ, ๋‹จ์ ์€ ์žฅ์ ์œผ๋กœ ๋œ๋‹ค. ๋‹น์—ฐํ•˜๋‹ค.(--;)
LazyInitialization์˜ ํ•˜๋‚˜์˜ ๋ณ€์ˆ˜๋‹น ๋‘๊ฐœ์˜ ๋ฉ”์†Œ๋“œ๋กœ ๋‚˜๋ˆ ์„œ ์ดˆ๊ธฐํ™”๋ฅผ ํ•œ๋‹ค. ํ•˜๋‚˜๋Š” ๋ณ€์ˆ˜๊ฐ€ LazyInitialization๋˜๋Š” ๊ฒƒ์„ ๊ฐ์ถ”์–ด ์ฃผ๋Š” getter์ด๊ณ , ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ๋ณ€์ˆ˜์—๋‹ค ๋””ํดํŠธ๊ฐ’์œผ๋กœ ํ• ๋‹น์„ ํ•ด์ค„ DefaultValueMethod์ด๋‹ค. ์ด ๋ฐฉ๋ฒ•์€ ์œ ์—ฐ์„ฑ์ด ์ฆ๋Œ€๋œ๋‹ค. ๋‹น์‹ ์ด ์„œ๋ธŒํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ ๋‹ค๋ฉด, DefaultValueMethod๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•จ์œผ๋กœ์จ, ๊ธฐ๋Šฅ์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค. ์ „์žฅ์—์„œ๋„ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ์„ฑ๋Šฅ๋„ ์ฆ๋Œ€์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

๋ณ€์ˆ˜๋งˆ๋‹ค getter๋ฅผ ๋งŒ๋“ค์ž. ํ•„์š”ํ•˜๋‹ค๋ฉด DefaultValueMethod๋ฅผ ์จ์„œ ์ดˆ๊ธฐํ™”๋ฅผ ํ•˜์ž.

์•ž์—์„œ ์‚ดํŽด๋ณธ ํƒ€์ด๋จธ ์˜ˆ์ œ๋กœ ํ•ด๋ณด์ž.
~cpp 
Class Timer
{
/* ... */
	int getCount()
	{	
		if(!count)	// --; ์–ด์ฉ”์ˆ˜ ์—†๋‹ค. ๊ทธ๋ƒฅ ์˜ฎ๊ธด๊ฑฐ๋‹ค.
			count = defaultCount();
		return count;
	}
	int defaultCount()
	{	
		return 0;	// ์ƒ์ˆ˜๋กœ ํ•ด๊ฒฐ๊ฐ€๋Šฅํ• ๋“ฏ
	}
	int getPeriod()
	{
		if(!period)
			period = defaultPeriod();
		return period;
	}
	int defaultPeriod()
	{
		return 1000;	// ์ƒ์ˆ˜๋กœ ํ•ด๊ฒฐ๊ฐ€๋Šฅํ• ๋“ฏ
	}
};

๋ณ„๋กœ ์•ˆ์“ธ๋“ฏํ•˜์ง€๋งŒ... ์ผ„ํŠธ๋ฒก ์™ˆ : ์ผ๋‹จ์€ ExplicitInitialzation์œผ๋กœ ์ถœ๋ฐœ์„ ํ•˜๊ณ , ์ƒ์†๋  ๊ฑฐ ๊ฐ™์œผ๋ฉด LazyInitialization์„ ์‚ฌ์šฉํ•œ๋‹ค.

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:37
Processing time 0.0037 sec