策略模式

策略模式:定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立与使用算法的客户。

当读完本章内容后,突然发现,其实自己以前写的游戏代码中也用到了这样的结构。只是没有可替换的算法族,不够严谨而已。


实现一个画笔

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设计模式。不得不承认,这是我看过的最有意思的一本技术类书籍了。虽然只讲了一些最常用的模式,但是让人理解深刻,建议喜欢模式的人可以买本看看。
















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