一般在面向?qū)ο蟮拿枋鲋校瑢?duì)象被描述為有屬性有行為的
我在用JAVA語(yǔ)言寫程序。但我覺得大多數(shù)時(shí)候?qū)ο罂偙恢弥贿叀N宜鶎懙拇蟛糠侄际窃趯懭绾翁幚碚?qǐng)求。處理過程,返回結(jié)果。這是明顯的面向過程。要說最 能體現(xiàn)我在用面向?qū)ο蟮恼Z(yǔ)言的就是偶爾使用一下繼承,使用一下多態(tài),來完成復(fù)雜一點(diǎn)的過程。僅此而已。面向?qū)ο蟮脑O(shè)計(jì)被拋到一邊。
在一般的數(shù)據(jù)管理系統(tǒng)中(我所見過的)都是以數(shù)據(jù)庫(kù)為中心。然后對(duì)數(shù)據(jù)庫(kù)表進(jìn)行增刪改查操作。就是所謂的CRUD。在這樣的系統(tǒng)中。幾乎所有的操作都是圍繞數(shù)據(jù)展開。比如一個(gè)BBS。最簡(jiǎn)單的就是設(shè)計(jì)一個(gè)板塊表,一個(gè)用戶表,一個(gè)帖子表,一個(gè)回帖表。這樣看來系統(tǒng)中應(yīng)存在四種對(duì)象:板塊,帖子,回帖,用戶。而這些對(duì)象有屬性。但有行為嗎?帖子,有什么行為呢?更新?自己更新自己?自己保存自己?這些在現(xiàn)實(shí)中看來都好像不是帖子本身應(yīng)具有的行為。
再?gòu)木幋a來看。一般的編碼應(yīng)該需要一個(gè)DAO來執(zhí)行數(shù)據(jù)庫(kù)操作。但這個(gè)DAO是一個(gè)”真正的對(duì)象“嗎。不盡然。因?yàn)镈AO本身沒有什么屬性可言的。當(dāng)然了。因?yàn)樗菬o狀態(tài)的。它是用來進(jìn)行數(shù)據(jù)庫(kù)操作的。雖然被稱為數(shù)據(jù)訪問對(duì)象。但其實(shí)并不是真正意義上的對(duì)象。只是一個(gè)過程。對(duì)。只是一個(gè)在與數(shù)據(jù)庫(kù)交互時(shí)不可避免的一個(gè)過程。
而系統(tǒng)中是否真的有真正的對(duì)象。是個(gè)問題。 現(xiàn)在有了Hibernate,有了Spring。各個(gè)層次分工更加明確。在實(shí)體類中是沒有行為的。成了純粹的數(shù)據(jù)對(duì)象。人們通過寫那些寫了上百遍的業(yè)務(wù)代碼去實(shí)現(xiàn)功能。每天都在作增刪改查。。不厭其煩。。。每天寫的代碼都類似。。不能說不是個(gè)問題。。。可能只是個(gè)人感覺。。
再說說剛剛BBS的例子。要真要說這個(gè)例子中有對(duì)象。我覺得應(yīng)該是用戶。用戶該有行為。也有屬性。用戶可以操作其他對(duì)象。比如:
public class User{
private String userName;
//..其他屬性
public void 更新自己的帖子(帖子對(duì)象){
//..作更新
}
}
private String userName;
//..其他屬性
public void 更新自己的帖子(帖子對(duì)象){
//..作更新
}
}
這就是本系統(tǒng)的唯一對(duì)象了嗎?
各位看官。你們的系統(tǒng)都是怎么設(shè)計(jì)的?