2017-04-02 27 views
0

我有幾個ViewModels從一個簡單的字符串參數運行一個進程。我希望他們都使用相同的方法來做到這一點,以便不重複代碼。MVVM:大多數ViewModel使用哪些方法?

我在考慮將此方法放在ViewModelBase中,但是不會複製代碼嗎?

+3

你爲什麼會認爲會複製代碼? –

+1

繼承的目的是刪除代碼重複,並使派生類使用相同的方法。所以'ViewModelBase'似乎正確的解決方案在你的情況 – Fabio

+0

最簡單的方法是將該方法添加到ViewModelBase,然後所有的視圖繼承它。這不會重複代碼。 –

回答

1

你如何寫一個包含你想調用的方法的小助手類?

+2

ViewModel的好處之一(MVVM模式)是可測試性。使用靜態「幫手」方法將消除「模擬」這種方法的可能性。 – Fabio

4

我在考慮將此方法放在ViewModelBase中,但是不會重複代碼嗎?

不是。如何定義一個方法在一個單一的基類導致代碼重複?

如果您有一種方法可以被所有(或幾乎所有)視圖模型使用,並且您還有一個公共基類,所有視圖模型都會繼承,那麼在基類中定義常用方法聽起來像是好主意。這是首先使用通用基類的主要目的。