策略模式

策略模式:定義了算法族,分別封裝起來,讓它們之間可以互相替換,此模式讓算法的變化獨立與使用算法的客戶。

當讀完本章內容後,突然發現,其實自己以前寫的遊戲代碼中也用到了這樣的結構。只是沒有可替換的算法族,不夠嚴謹而已。


實現一個畫筆

public abstract class BaseGraphics implements FrameWork{

   public void drawFrame(Bitmap[][] image, short frameData[],short moduleData[][],int x, int y,byte dir, int color) {

//------------略

   }

實現的方式大概是這樣的,在所有角色的父類中聲明一個畫筆的引用。

public abstract class GameObject extends Identity implements Cloneable {// 對象類型

protected static BaseGraphics g;

public static void setGUI(BaseGraphics gui) {

g = gui;

}

在子類的繪製方法中調用:

class Person extends GameObject implements FootBaller, Cloneable { // 既是對象又是球員。

   public void draw(int sx, int sy) {

       g.drawFrame(image, frameData[type][cartoon.getFrameId()],

moduleData[type], x - sx, z + y - sy, faceDir, color);


   }

其實這樣寫的時候沒想過太多,就是想讓人物和繪製分離,由於這些代碼的結構和思想基於J2ME,源於我的前輩,所以當時也沒有想過用組合模式去實現,當然我那時候也不知道什麼是組合模式。

自從第一次自己寫代碼做遊戲以來 ,每做一款遊戲都想把代碼組織的很好(當然多少帶着前人的思想)。但是經驗不足,也不知道有這方面的書籍,後來看了java與模式 有了點感覺 但是書寫的很晦澀,不是很喜歡 也就沒買,看的也是電子書。後來不知爲什麼買了這本HeadFirst設計模式。不得不承認,這是我看過的最有意思的一本技術類書籍了。雖然只講了一些最常用的模式,但是讓人理解深刻,建議喜歡模式的人可以買本看看。
















發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章