首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

应用枚举实现一个状态机

2012-09-09 
使用枚举实现一个状态机非常巧妙的一个使用枚举的例子.原文见这里interface Context {ByteBuffer buffer()

使用枚举实现一个状态机
非常巧妙的一个使用枚举的例子.原文见这里

interface Context {    ByteBuffer buffer();    State state();    void state(State state);}interface State {    /**       * @return true to keep processing, false to read more data.     */    boolean process(Context context);}enum States implements State {    XML {        public boolean process(Context context) {            if (context.buffer().remaining() < 16) return false;            // read header            if(headerComplete)                context.state(States.ROOT);            return true;        }    }, ROOT {        public boolean process(Context context) {            if (context.buffer().remaining() < 8) return false;            // read root tag            if(rootComplete)                context.state(States.IN_ROOT);            return true;        }    }}public void process(Context context) {    socket.read(context.buffer());    while(context.state().process(context));}

热点排行