2 回答

TA貢獻1789條經驗 獲得超10個贊
其實你說的這個問題很多框架都可以解決,也就是active record功能,也就是根據代碼動態生成query語句,它最開始在rails框架里得到推廣,并逐步在其他語言里得到實現。比如
$userModel->find_one_by_id(123);
實際上如果你的框架支持active record,像這種簡單的根據主鍵查詢,我們是不需要在model里寫一行代碼的,model基類根據你所調用的方法名,組裝成合適query語句,并將查詢結果返回給你。
我不知道你使用的是何種語言,但目前基本所有的腳本語言都有active record的實現,你可以在自己的項目中實現這一功能,這樣也給后續的開發帶來好處。
能在代碼中約束的問題,比用一些設計原則約定更加有效,因為你不能保證每個開發者的水平都一致。

TA貢獻1809條經驗 獲得超8個贊
舉一個例子,active record在doctrine里面是這樣實現的:假如一個表foo,帶字段bar1, bar2, bar3,doctrine會根據table schema直接生成四個文件: FooTable.class.php,FooTableBase.class.php,Foo.class.php,FooBase.class.php。在兩個base文件里面,會有自動生成的一系列getter和setter比如getBar1(),setBar1($param)這些方法。base文件是不允許程序員自己修改,它會隨著schema的改變而變化。而非base類直接繼承了base類,所以看上去這個類會干凈許多
添加回答
舉報