看板 C_Sharp 關於我們 聯絡資訊
最近遇到公司的需求需要繼承元件 雖然這樣的設計邏輯似在網路爬文但目前沒有找到比較好的解法。小弟感覺測試方面與耦合性都有很明顯的缺點。使用起來繼承性很差,有用了Dependency Property試著去寫,但仍然遇到了一些問題 例子一: 鳥:會飛的動物 台灣鳥:鳥 美國鳥:鳥 歐洲鳥:鳥 韓國鳥:鳥 . . . 需求:假設發生了基因突變,鳥都變成6隻腳,讓所有國家的鳥都有辦法繼承,因為國家很多...所以要找一個方式不要去每個國家改。 實際的例子:假設訂單模組下的 有好幾二三十幾個表單會同時使用同一組資源底下的DataGrid。該DataGrid的Column有金額、單價、數量等約末二十、三十欄位。每個欄位都預先寫好了大部分共同的行為、操作。 需求: 表單一和大多數表單:的情況下是單價*數量=金額 表單二:是單價*數量*0.9(加權)=金額 表單三:單價*數量*0.8(加權)=金額 作 以上是一種行為的例子,比較像是overwrite的概念 問題: 假設今天欲在DataGrid上加入一個新的欄位: 「如產品名稱」 1.該Cell點擊可以開啟一個產品詳情視窗(open new window) 2.輸入完「產品編號」後自動帶出「產品名稱」以及對應其他欄位的預設值,例如「倉庫欄位」為預設倉 包括許多複雜的業務邏輯已經寫好了。有沒有方式讓每一個表單都有辦法去套用(繼承)這個?因而不去改變每一個View和Viewmodel? 請問上述情況如何保持覆寫的彈性?在wpf上有沒有什麼樣的做法可以更好的解決這樣子的需求? 先感謝大神們。 ----- Sent from JPTT on my iPhone -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.216.100.61 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1578356448.A.7E0.html
testPtt: 我會習慣改VM加prop 如果不想改cs內容可以另外開partial 01/07 08:35
謝謝你的建議,大多數看到的方式也是這樣解決的,我會朝這個方向去寫
s4300026: 深入淺出 設計模式 01/07 18:33
我瞭解這種設計模式,但也有一種模式是減少重複code的一派。 這種自製元件以及重複使用看起來似乎無解,謝謝你的回覆 如果遇到表單使用同一個元件很兇的情況下也必須取捨這種模式
s4300026: datagridview的callback呼叫你的權重處理class,即把ui 01/07 18:38
s4300026: 和功能分開,不要把功能寫在callback中 01/07 18:38
※ 編輯: opdtk (49.216.100.61 臺灣), 01/08/2020 00:29:14 ※ 編輯: opdtk (49.216.100.61 臺灣), 01/08/2020 00:35:53 ※ 編輯: opdtk (49.216.100.61 臺灣), 01/08/2020 00:40:00