智慧領域物件設計

cuwkuhaihong發表於2010-07-04
我們重新審視的以下JAVA的Object的物件,其中包含了兩個特殊的方法,equals和clone,從這兩個方法我們可以看出,在物件導向的程式設計中,物件的設計不能緊緊參考其所描述的物件,而不是不可新增其他便於物件活動的行為的。為什麼會有這樣的結論,equals的判斷兩個物件是否相同,這種物件與物件之間相同與否的問題,是隻有具備智慧的動物或者智慧機器人才有的能力做這樣的結論,大多數的物件是沒有此能力的,clone就不必說了。故做物件設計不必嚴格遵守現實,現在大家在寫程式的時候經常建立的javabean,只有setter和getter,也是一種無活力物件,只具備傳遞資料的能力,而且要配合對應的service方法才完成工作,service類就是一個方法集,嚴格來講不是物件導向程式設計。
我們不必在意是否遵守了物件導向的設計方法,能提高生產力的方法,就是好方法。我嘗試了一種新的設計方法,看是否可以提高生產力,大家不妨看看。

第一,Object物件已經具備equals和clone了這樣的智慧方法了,我們不妨再讓這個object聰明點,給他提供記憶聯想功能。接下來的兩點詳細說明。

第二,很多物件是需要儲存的,物件儲取能力不需要外部提供,而是繼承提供存取能力的物件,這就好像說,你家養的狗狗可以自己到寵物管理機構登記和變更它自己的資訊了(聽著都輕鬆),不用那麼現實。

第三,世界上任何物件都不是孤立存在,而是相互影響的,存在因果關係的,一種原因能產生什麼樣的結果,有些是一定的,有的卻不一定,物件之間的關聯,有些情況是聯絡緊密的、有些是疏散的,物件具備自己的關係網路。如你目睹一起三車相撞的交通事故,其中一人的腿的傷勢給你印象深刻,以後任何人提起腿受傷,你都會想起那個人,接著想起親眼目睹那次事故,你還可以想到這起事故具體是如何發生的,即有點到面,有面到體,逐步深入。下面是我的一個物件設計(原始碼https://sourceforge.net/projects/thinery/files/try.zip/download
):


public abstract class IObject extends Observable {
	protected static boolean inited = false;
	
	public IObject() {
		….....
		
	}
	
	/**
	 * 物件第一此載入的時候初始化所有的監聽器,該類的活動如果影響的其他物件
	 * 都可以在監聽器完成因果傳遞,監聽器統一配置在一個叫:[子類名稱]_lstnr.properties
	 * 的配置檔案中,如果物件找不到該檔案,會認為沒有監聽器
	 */
	static Map<String, Observer> observers = new HashMap();

	/**
	 * 把物件自身持久的資料庫的方法。子類可以根據類的情況,重寫該方法。 如該類是一對一,
         *一對多的,想把關聯物件一起儲存,就需要重寫該方法
	 */
	public abstract void remember();

	/**
	 * 刪除此物件對應的資料庫記錄。 恰如我們忘記一件事物
	 */
	public abstract void forget();

	/**
	 * 用於更新資料庫記錄,需要更新物件的某一個屬性時,用到此方法。 恰如我們需要更新對一件事物的記憶。
	 * 我們每隔三天去看一個正在建設的高樓,那麼大腦每次都要更新高樓的高度。
	 * 
	 * @param updateFields
	 *            屬性的名稱,如果你更改username的值,那麼這個引數就應該是username, 注意不是username的值
	 */
	public abstract void updateMemory(String... updateFields);

	/**
	 * 這是一個最自由的方法,該類方法名稱意為”聯想“,一般預設實現是查詢相關物件。 
         * 如:我們透過寶馬,聯想到賓士和奧迪。
	 * 如果這是一個事件物件,那麼你可以讓他想到與這個事件相關的任何東西。
	 * 
	 * @param params
	 *            任何物件
	 * @return
	 */
	public abstract List associate(Object... params);

	/**
	 * 根據主鍵資料庫中獲取自身的全部資訊
	 * 
	 * @param id
	 * @return
	 */
	public abstract void obtainMe();
}
<p class="indent">





相關文章