避免通常的ORM因爲不相關的原因,我試圖編寫一個既可以呈現來自數據庫的數據又可以向其中添加/更新數據的類(這首先是個好主意?)。Scala:構造方法與選項
class Car (val _id:ID, val _name:String = "") {
def this(_id:ID) = {
val car = DB.fetchCar(_id)
this(_id,car.name)
}
def this(_name:String) = this(null,_name)
def isSynced:Boolean = { ... }
def sync { ... }
}
這意味着您可以:
- 知道創紀錄的兩個編號和名稱,創建代表一個對象,
- 只知道該記錄的ID,您可以構建從數據庫中的rep對象和
- 如果你沒有提供一個id,你的對象將處於未初始化狀態,並且在添加/更新發生後會同步。
事情是,第一個構造函數依賴於DB操作,因此Option [Car]作爲返回類型更有意義。但據我所見斯卡拉不允許你做這樣的事情:
def this(_id:ID):Option[Car] = {
try {
val car = DB.fetchCar(_id)
Some(this(_id,car.name))
} catch {
case e:Exception => None
}
}
這是否有意義?你將如何實現這一點?
非常有意義,也CarData你的意思打包所有的對象數據爲案例類?這聽起來不錯,但是現在的Car類更好地被用作這種類型的行爲的一個可重用的泛型類,對嗎? – parsa
'CarData'只是一個無論數據/值/參數都需要的佔位符。沒有與之相關的實際設計建議......對不起,如果它帶來任何困惑。 – Dirk
我看到了,無論如何謝謝 - 我從中得到了一個很酷的想法。 – parsa