E D R , A S I H C RSS

Self Delegation

Self Delegation

•žžฅ— ๋‚˜˜จ ๋‘ฐ€ง€ งˆ๋ฌธ„ ƒธฐ•ด๋ณดž. œ„ž„•œ ฒด˜ ฃผฒด„•„š”•œฐ€? œ„ž„•œ ฒด˜ ƒƒœฐ€ •„š”•œฐ€? ด ๋‘ฐ€ง€— yes๋  ๋Œ€๋‹•˜๋ฉด Simple Delegation„ “ธˆ˜ —†๋‹ค.
----
œ„ž„๋œ ฒดฐ€ œ„ž„•˜๋Š” ฒด—  ‘•˜ ค๋ฉด ฐ€žฅ ‰ฌšด •œฐ€ง€ ๋ฐฉ๋ฒ•žˆธฐ๋Š” •˜‹ค. ๋ฐ”๋กœ œ„ž„•˜๋Š” ฒด˜ ฐธกฐ๋ฅผ ฐ€ง€  žˆœผ๋ฉด ๋œ‹ค. •˜ง€๋งŒ ๋ณตžก•ง€ , นจงˆˆ˜๋„ žˆ๋‹ค.
----
—ฌธฐ„œ  œ‹œ•˜๋Š” ๋ฐฉ๋ฒ•€, œ„ž„•˜๋Š” ฒด๋ฅผ ถ”ฐ€ ŒŒ๋ผ๋ฉ”„ฐ๋กœ„˜ธฐ๋Š” ฒƒด๋‹ค. for๋ผ๋Š” ด๋ฆ„˜ ถ”ฐ€ ŒŒ๋ผ๋ฉ”„ฐ๋กœ œ„ž„•˜๋Š” ฒด๋ฅผ ๋„˜ธฐž.
----
Self Delegation˜ ฐ€žฅ ๋›ฐ–ด๋‚œ ˜ˆ œ๋Š” Visual Smalltalk 3.0˜ Dictionaryตฌ˜„ด๋‹ค. Dictionary๋Š” ฐฐ˜ ƒƒœ— ๋Œ€•œ ™”๋œ HashTable„ —ฌ๋Ÿฌœ ฐ€ง€  žˆ๋‹ค. ด๋•Œ, žธฐ ž‹ (Dictionary)๋ฅผ ๋„˜ฒจฃผฒŒ ๋œ‹ค.
~cpp 
class Dictionary
{
...
	void put(const T1& keyObject, const T2& valueObject) {
		hashTable.put(keyObject, valueObject, this); // ๋ฌธ๋ฒ• •ˆ๋งž๋Š”ฑฐ ฐ™๋‹ค. ธ๋ƒฅ ธ๋Ÿฐฐ€ ๋ณด๋‹•˜ž.
	}
};
HashTable€ Collectionœผ๋กœ ๋ณด๋‚ธ ๋ฉ”„ง€ฐ€ ๋ฑ‰–ด๋‚ธ ฐ’„ ธฐ๋ฐ˜œผ๋กœ •‰ฌฐ’„ „‚ฐ•œ‹ค.
~cpp 
void HashTable::put(const T1& keyObject, const T2& valueObject, Dictionary* collection)
{
	hash = collection->hashOf(keyObject);
	...
}
 œ hashOf๋ฅผ ด๋ฆฌ๋ชจ”ผ˜œผ๋กœ ตฌ˜„•  ˆ˜ žˆ๋‹ค.
~cpp 
HashTable& Dictionary::hashOf(const T& object) {
	return object.hash();
}
HashTable& IdentityDictionary::hashOf(const T& object) {
	return object.basisHash();
}
----
–ดงธ C++   ๋ฏธ›Œ„‹ค.
----
SBPPSummary
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:28:00
Processing time 0.0094 sec