看板 C_and_CPP 關於我們 聯絡資訊
最近在學QT,看到教學關於model/view的架構有點卡住,不曉得理解對不對 從概念來看,所謂的m/v架構有4個角色 1.data 2.model 3.view 4.delegate 其中的關係為: a.只有model能對data操作 b.view透過delegate或者model進行rendering c.只有delegate能對model editing 從結果來看,因為此架構,QT的各個元件能保證資料同步 而我目前卡住的點在於model的部份 以QStringListModel,存放的資料為型態QStringList 但考慮到實作,QStringList就是一種資料結構,本身的data為QString,list也必須實現資料操作的method 也就是說概念上model的定義:提供view的關於data的API部份,QStringList本身就已經實現了 只差在不保證資料同步 我的理解在於,概念上model的定義是一回事,但實際上model的重點應該在保證資料同步上(比如說thread-safe) 也就是說,假設我今天做了一個叫做QStringListDataSafe的東西喂給view 這種狀況下,應該也是符合model/view的概念 請問我的理解對嗎? ----- Sent from JPTT on my Asus ASUS_I01WD. -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.10.10.248 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1604486931.A.AF4.html
CoNsTaR: safe不safe只是自嗨/讓別人接受這個設計的藉口而已 11/05 07:20
CoNsTaR: 真的從 safety 的角度下去設計的東西才不會長這樣 11/05 07:20
CoNsTaR: 但他們免費寫東西給你用,就隨他們講吧,不需要太執著於 11/05 07:20
CoNsTaR: 這個(因為沒有結果) 11/05 07:20
CoNsTaR: 你只要知道他們預期你怎麼用他們寫的東西就好了 11/05 07:20
CoNsTaR: 回你的問題,如果你有一個 type `Dog`,你知道它是動物, 11/05 07:20
CoNsTaR: 它實際上也有所有身為動物需要的東西,但在一個 nominal 11/05 07:20
CoNsTaR: 的 type system 下,在你讓他繼承動物以前,它就不是一 11/05 07:20
CoNsTaR: 個動物 11/05 07:21
CoNsTaR: 同理,這邊你的 data 不是通過 model 餵給 view,那它就 11/05 07:21
CoNsTaR: 不是“safe”的 data 11/05 07:21