我真的很希望有人能回答這個問題。我認爲我絕對不是唯一一個對此感到困惑的人,我無法找到任何清楚解釋這個概念的東西。紅寶石代表從可可開發人員背景解釋
我對委託模式的理解來自於研究Cocoa
框架。對我來說,可可的實施非常明確。但是我很難在Ruby中理解它(標準庫的Delegator
,SimpleDelegator
與ActiveSupport
的Delegate
)。這對我來說毫無意義。主要是因爲一個是類型安全的,另一個是鴨子類型。你已經可以看到我的觀點,但請允許我擴大......這裏是我的如何使用可可的委託模式總結:
我們的「成分」是:2類,A
和B
和,這Cocoa是可用於委託的預定義方法集。
的模式的實現,基本上如下:
A
定義了一套方法委託給B
。B
的委託被設置爲A
=>
B
現在可以調用委託方法,像這樣:@delegate.send(a_delegated_method)
什麼我不綁在一起的是紅寶石採用鴨打字的事實,所以你可以發送任何方法調用任何對象,對吧?因此,使用我剛剛解釋的模式,只要2個對象處於同一個域中,您可以在A
@b.send(:a_delegated_method)
之間說,反之亦然,而在B
@a.send(:another_delegated_method)
。
難道是在Ruby中委託的地方是委託方法被定義的地方嗎?意思是我們從A
類別內發送到屬性@b
(@b(:delegated_method)
)a :delegated_method
在A
本身內定義的內容?
希望這不是太混亂。我自己很疑惑,爲什麼代表甚至存在鴨子打字的語言,以及Delegator
,SimpleDelegator
和ActiveSupport
的Delegate
之間有什麼區別。
委託是_pattern_。它與打字工作無關。這兩件事不僅是正交的,它們完全沒有關係。 – matt 2015-02-05 19:33:10
我知道這是一種模式,但我的問題更多地是關於在兩種不同的環境中實施模式的變化,如果這是有道理的。 – believesInSanta 2015-02-05 20:10:39