E D R , A S I H C RSS

Simple Delegation

Simple Delegation

μœ„μž„μ„ μ‚¬μš©ν• λ•Œ, 당신이 ν•„μš”ν•œ μœ„μž„μ˜ 묘λΈ(?)λΌ λΆ„λͺ…ν•˜κ²Œ ν•΄μ£ΌλŠ” λ„μ™€μ£ΌλŠ” 두가지 μ΄μŠˆκ°€ μžˆλ‹€. ν•˜λ‚˜λŠ”, μœ„μž„ν•˜λŠ” 객체의 주체성이 μ€‘μš”ν•œκ°€? 이닀. μœ„μž„λœ κ°μ²΄λŠ” μžμ‹ μ˜ μ‘΄μž¬λΌ μ•Œλ¦¬κ³  싢지 μ•ŠμœΌλ€λ‘œ μœ„μž„ν•œ 객체둜의 접근이 ν•„μš”ν•˜λ‹€.(?) λ‹€λ₯Έ ν•˜λ‚˜λŠ”, μœ„μž„ν•˜λŠ” 객체의 μƒνƒœκ°€ μœ„μž„λœ κ°μ²΄μ—κ²Œ μ€‘μš”ν•œκ²ƒμΈκ°€? κ·Έλ ‡λ‹€λ©΄ μœ„μž„λœ κ°μ²΄λŠ” 일을 μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄ μœ„μž„ν•œ 객체의 μƒνƒœκ°€ ν•„μš”ν•˜λ‹€.(λ„ˆλ¬΄ μ΄μƒν•˜λ‹€.) 이 두가지에 no라고 λŒ€λ‹΅ν•  수 있으면 Simple Delegation을 μ“Έ 수 μžˆλ‹€.

κ·Έλƒ₯ μ˜ˆμ œλ‚˜ 보자.-_- λ‚΄κ°€ 봐도 무슨 말인지 λͺ¨λ₯΄κ² λ‹€.

Collection처럼 μž‘λ™ν•˜μ§€λ§Œ 더 λ§Žμ€ κΈ°λŠ₯을 가지고 μžˆλŠ” κ°μ²΄λΌ λ§Œλ“€κ³  μ‹Άλ‹€. 상속받지 말고, Collection을 μ§€μΉ­ν•˜λ„λ‘ ν•˜μž.(μœ„μž„ν•˜λ„λ‘ ν•˜μž.)
~cpp 
class Vector
{
private:
	Array* elements;
public:
	Vector(int size) {
		setElements(new Array(size));
	}
	void setElements(Array* aCollection) {
		elements = aCollection;
	}
	void do( (void*) blockFunc() ) {
		elements->do(blockFunc);	// Arrayμ—κ²Œλ‘œ μœ„μž„
	}
};
μ€ μ΄μƒν•˜κΈ΄ ν•˜μ§€λ§Œ κ·Έλƒ₯ κ·ΈλŸ°κ°€ 보닀 ν•˜μž. C++은 λ„ˆλ¬΄ μ œμ•½μ΄ μ‹¬ν•˜λ‹€. μ–΄μ¨Œλ“  at, at: put: 같은 메세지도 μœ„μ²˜λŸΌ μœ„μž„μ΄ κ°€λŠ₯ν•˜λ‹€.

μœ„μž„ν•˜λŠ” 객체(delegating object)λŠ” μœ„μž„ 객체 λ˜λŠ” μœ„μž„μž 객체, μœ„μž„λœ 객체(delegate)λŠ” λŒ€λ¦¬μžλ‘œ λ²ˆμ—­ν•  수 μžˆμ„ 것 κ°™κ³ (차라리 μ˜μ–΄λΌ κ·ΈλŒ€λ‘œ μ“°λŠ”κ²Œ 쒋을지도 λͺ¨λ₯΄κ² λ„μš”), 주체성은 μ°Έμ‘°λΌ μ˜λΈν•˜μ§€ μ•Šμ„κΉŒμš”?

객체의 주체성(?)에 λŒ€ν•œ μ˜ˆλΌ λ“€λ©΄(μ œλŒ€λ‘œ μ΄ν•΄ν–ˆλŠ”μ§€λŠ” 잘λͺ¨λ₯΄κ² μ§€λ§Œ... ^^;)
~cpp 
// μ±„νŒ…λ°©μ—μ„œ λ‚˜κ°€κΈ° μœ„ν•΄ ν˜ΈμΆœλ˜μ–΄μ•Ό ν•  λ©”μ†Œλ“œ
ChatClient::GoOutFromRoom() { 
    Cmd* cmd = new OutFromRoomCmd(this);
    cmd->Execute(this); // delegating object의 μ°Έμ‘°(this)λΌ delegateμ—κ²Œ 전달
}

이런 μ‹μœΌλ‘œ μ„œλ²„μ—κ²Œ μ°Έμ‘°λΌ μ „λ‹¬ν•˜κ³  μ„œλ²„λŠ” λˆ„κ°€ 보낸 λ©”μ‹œμ§€μΈμ§€λΌ μ•ŒκΈ° λ•Œλ¬Έμ— 처리 κ²°κ³ΌλΌ ν•΄λ‹Ή ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ λ³΄λƒ…λ‹ˆλ‹€. ν΄λΌμ΄μ–ΈνŠΈλŠ” μ„œλ²„κ°€ 보낸 처리 κ²°κ³Όκ°€ 성곡이면 UIλΌ μ—…λ°μ΄νŠΈν•˜κ³  μ‹€νŒ¨ν•˜λ©΄ λ©”μ‹œμ§€λΌ λ³΄μ—¬μ€λ‹€κ±°λ‚˜ ν•˜μ‹œλŠ” μ‹μœΌλ‘œ μ²˜λ¦¬ν•  수 μžˆμ„κΊΌ κ°™λ„μš”.--Benghun

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:28:02
Processing time 0.0142 sec