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