[WPF]View First、ViewModel First 思考與淺見

  • 1248
  • 0

摘要:[WPF]View First、ViewModel First 思考與淺見

View先行設計好,還是ViewModel 先設計好?

View的屬性配合ViewModel的屬性來設計?還是ViewModel的屬性配合Veiw的屬性來設計好?

 

因為一般來說都是ViewModel先行,因為較直觀,在實作上,這是完全務實的。但就MVVM上來說,這可能會造成View的利用性降低?

 

 

以下是個人對與兩種模式的理解:

 

ViewModel First:

先設計ViewModel,完全依造業務邏輯 來設計相對應的View物件屬性,因為在設計ViewModel時會完全了解Model與View使用目的,所以物件綁定的深淺可能不一定。

 

優點:

1.能因應業務邏輯來將View與ViewModel的屬性一一填入後,在一個一個填入View。

2.Model設計可以較複雜,以利綁定。

缺點:ViewModel與View的綁定會太過於耦合,將造成View重覆使用性降低。

 

View First:

先設計View,因為無法詳細理解 ViewModel所綁定的UI與Model屬性到底有多深層,所以會在設計完View時會盡量將資料以最淺(簡單)的方式綁定,View與ViewModel層的綁定也會較淺(簡單)。

 

 

優點:View重覆使用性提高,因為在設計時 先將想法抽象(較ViewModel First抽象),那意味著在設計觀點上將無法與ViewModel的屬性定義完全耦合,在ViewModel設計上也要更加抽象,因為是從View的角度出發,故才能提高使用率。

缺點:

1.若無良好的事先規畫,會碰到瞎子摸象的情況,因為必須更抽"象"的設計。

2.Model設計要更抽象,因為是先設計好View 再來設計ViewModel

 

在WPF內綁定的複雜度將遷就於,資料結構設計時的深淺與關聯。為什麼要提這個呢?因為若你無法得知你的資料結構(View First)將造成綁定上的困難;但若你已知資料結構設計時,那你會太依賴了你的資料結構,造成與View屬性的綁定上太過耦合。

 

以上是對於 View First跟ViewModel First 思考後的一些理解。

 

 

By-藍小伙-哪個先呢?