1

是否有語言在同一時間慣用兩種概念?什麼時候有必要?每種方法的優缺點是什麼?Multimethods vs Interfaces

背景的問題:

我是新手(有一些Python知識)試圖建立的多方法和接口是如何意味着更好的畫面中使用(一般)。

我假定它們並不意味着被混合:在接口方面任一個聲明可用邏輯(和實現它作爲類的方法)或一個做它在多方法的方面。它是否正確?

是否有意義說話OOP概念的頻譜的,其中:與幼稚子類

  • 一個開始(數據和邏輯(方法)和邏輯實現(方法)是緊耦合的)
  • 然後通過接口(邏輯是在界面,數據和邏輯的實現是在類)
  • 和在多方法結束(邏輯是在多重方法的簽名,邏輯實現分散,數據是在類(這是僅一個數據結構與漂亮的手柄))?

回答

2

這個答案開始很大程度上取決於我在Common-Lisp和clojure中開發的主要經驗。

是,多方法確實攜帶在成本一定損失,但在製作一個調度機制,精確的模型無論你可能看由他們完成專業化的能力,提供了幾乎無限的靈活性。

協議和接口,一方面,也參與了專業化和調度的這些相同的事項,宋,但他們的工作,並在一個非常不同的方式使用。這些都是按照約定的設施,其中單個調度只爲給定類提供一個專門實現的直接映射。協議和接口的強大功能在它們的典型用法中定義了一些抽象能力,這些抽象能力合在一起時爲這個概念完全指定了API。例如,「指針」接口可能包含代表指針的概念的3或4個概念。所以指針的一般接口可能看起來像REFERENCE,DEREFERENCE,ALLOCATE和DISPOSE。因此,接口的力量來自於一組相關定義的組合,它們共同表達競爭的抽象 - 在特定情況下實現接口時,通常是全有或全無的努力。無論是這四種功能都存在,還是無論我們做什麼,都不代表我們對指針的定義。

希望對此有所幫助。 Dan Lentz

相關問題