策略模式:定義了算法族,分別封裝起來,讓它們之間可以互相替換,此模式讓算法的變化獨立與使用算法的客戶。
當讀完本章內容後,突然發現,其實自己以前寫的遊戲代碼中也用到了這樣的結構。只是沒有可替換的算法族,不夠嚴謹而已。
實現一個畫筆
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設計模式。不得不承認,這是我看過的最有意思的一本技術類書籍了。雖然只講了一些最常用的模式,但是讓人理解深刻,建議喜歡模式的人可以買本看看。