06-12-14,07-1-29

// 06-12-14

關於對象的控制權限的問題。

  一個對象可以控制其他的對象,但是,有時候,這種控制權需要進行良好的設計。
  如果一個對象可以任意的驅動其他對象,那麼,你的代碼將很難維護。
  如果一個容器內的對象可以將主流程從這個容器轉移到其他地方,那麼,你的容器將會有莫名其妙的邏輯,因爲他沒有對流程的控制權。
  這個時候,容器內的對象就不能隨意轉移流程,轉移流程的操作交給容納他的容器來處理,這樣容器將會有更好邏輯。

  〈07-2-13 比如一個狀態控制着一個狀態工廠,使用這個狀態的類就會失去狀態切換的控制,因爲他沒有狀態工廠


//07-1-17

1 渲染器的接口
 
  渲染器不需要繪圖的方法,只需要創建窗口,切換緩存,清除緩存之類,而繪製圖片、點、矩形等的方法應該放在表面類中。
 
  這樣就不用將渲染類直接交給其他需要顯示的對象了,而只需要將後緩存所用的表面給他們使用,另外,所有的對象都畫在一個表面上了,那麼我們還可以靈活使用這個表面,對這個表面作些特殊處理,這帶來了很大的靈活性。

2 字體
 
  字體類的字體繪製方法確實需要放在字體類中,因爲繪製過程中必須要對字體的數據做特殊的處理,但是它的繪製目標和繪製所用的方法,都將來自表面類,也就是說,字體繪製的過程其實是在表面上作畫。

3 工廠模式

  關於工廠類。創建表面,創建玩家角色,創建飛行道具等對象可以使用工廠模式。
  創建表面的工廠可以保存這個表面的引用方便再次創建和集中銷燬,創建玩家角色和飛行道具的工廠可以在對象間通用一些數據,也可以使用池。

4 一般的接口問題

  在設計接口的時候,有些簡單的方法,比如GET和SET類的方法,不要將方法所操作的數據放在接口裏面,因爲你的接口被別人實現的時候,別人可能已經通過各種途徑有了具體的數據實體。

5 工廠模式續
 
  創建對象的對象工廠對象工廠是很有用的,它可以使得對象之間共享一些數據,而且可以使的對象的創建工作更加靈活。
 
  比如一個類 NPC, 遊戲世界必然會有很多的這個類的對象,但是他們的圖形或者碰撞數據
  都可以通用,這些通用的數據就是我以前說的靜態數據,那麼我們必須用一個代理對象來完成NPC對象的創建工作,這就需要Factory類,當你創建NPC的時候,它會把以前加載NPC用的通用數據給你,這樣就可以節省空間。另外,工廠類還可以在內部使用對象池來存放對象,解決動態申請內存帶來的效率問題。所以,這個模式是很有用的。

//07-1-19

  對於在程序開始時需要啓動的模塊,可以專門給他們寫一個模塊管理的類。
  這個類可以註冊模塊,然後只管啓動和關閉。
  <07-2-23,有更好的設計,見07-2-3
 
//07-1-29

1 接口的設計
 
  接口裏面的數據存取方法一般都很簡單,如GET和SET類,我們如果將這些方法變成接口的話,會犧牲效率,但是如果是內聯的話,必須將數據放在接口裏面,這又有點不妥。
 
  一個折中的辦法是GET和SET類方法是虛擬的,也就是說,子類可以使用接口裏面的數據和對應的存取方法,也可以使用自己的數據,然後重載存取方法。
  〈07-2-13,這些都不是最重要的,最重要的我想你明白。

發佈了28 篇原創文章 · 獲贊 0 · 訪問量 9577
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章