我想知道是否可以在運行時更改應用程序的邏輯? Meybe我們可以用另一個實現來替換抽象類的實現嗎?或者,也許我們可以在運行時替換共享庫...在運行時更改應用程序的邏輯
更新:假設我有函數foo(X,Y)的兩個實現,並且可以使用基於strategy pattern
任何人。現在我想知道是否可以在不重新啓動應用程序的情況下添加foo(x,y)的第三個實現。
我想知道是否可以在運行時更改應用程序的邏輯? Meybe我們可以用另一個實現來替換抽象類的實現嗎?或者,也許我們可以在運行時替換共享庫...在運行時更改應用程序的邏輯
更新:假設我有函數foo(X,Y)的兩個實現,並且可以使用基於strategy pattern
任何人。現在我想知道是否可以在不重新啓動應用程序的情況下添加foo(x,y)的第三個實現。
正如你所說的「用另一個實現替換抽象類的實現」如果你的意思是,你可以使用運行時多態並用另一組具體類的實例改變具體類的實例。
更具體地說,有一個衆所周知的模式,稱爲Strategy pattern正是爲了這個目的。看看wiki page,因爲它很好地解釋了這一點,即使有代碼示例和圖表。
+1提及策略。 @Meysam看看這個http://www.webbiscuit.co.uk/articles/the-strategy-pattern/ –
虛擬函數的C++機制不允許您在運行時更改實現。
但是,您可以使用函數指針在運行時實現任何實現更改。
你可以在插件中重新創建新類的適當實例。 –
這聽起來像一個情況下,你應該重新考慮你的問題,而不是試圖做一些古怪。你想達到什麼目的? – Polynomial
你的意思是類似[Delegation Pattern](http://en.wikipedia.org/wiki/Delegation_pattern)或者[Self-Modifying Code](http://en.wikipedia.org/wiki/Self-modifying_code) ?你需要指定_by who_另外的實現應該被添加! – moooeeeep
@Meysam:現在你已經爲你的問題添加了一些東西,其答案也取決於你通過戰略模式*所瞭解的內容。你讀過嗎?如果你明白這一點,你面臨的困難是什麼? – Nawaz