2 回答

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

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