2012-12-24 20 views
0

我目前正在開發一個使用抽象類與默認實現的API。儘管過去我已經完成了這些工作,但我並沒有真正考慮到派生類中調用base.SomeMethod()的哲學含義,因爲這些API不適用於公共消費。由於此API旨在公開可見,因此我想知道如何將呼叫處理回基類。我可以假設基礎調用將始終在派生實現中首先發生或最後發生,並且我只是記錄實現者的假設?還是應該基類調用沒有副作用,所以執行者何時調用基類無關緊要?這是否有一個經驗法則?作爲一名API開發人員,我應該在什麼時候調用基類實現?

謝謝。

+2

我很好奇爲什麼這是投下來的。這似乎是一個合理的問題,我想接受教育,爲什麼它不是。 – TheHurt

+0

base.SomeMethod是由派生類還是由某些消費者調用的?如果它是派生類,則SomeMethod不應該公開。 –

回答

0

恕我直言,它很大程度上取決於您的特定班級的需求。如果您想確保調用基本行爲(甚至可以按特殊順序),則可以使用template method。我發現這種模式是一種以受控方式提供子類擴展點的非常優雅的方式,我認爲比向開發者留言更好。

一個明顯的缺點是,如果你選擇了不好的鉤子,你可能會限制太多的其他開發人員。我記得有一次或兩次不得不重寫一個模板方法,因爲鉤子不允許我執行我需要的行爲。

HTH

相關問題