state状态模式
来源:互联网 发布:土豆网视频下载 mac 编辑:程序博客网 时间:2024/06/17 03:23
在诸多设计模式中,state的模式也是应用的非常广泛的,例如:slidemenu,下拉刷新等状态转移的应用中
我们分析一个Door的状态
整个源码设计
首先是Door类,接着是Door的状态,让后是实现状态的不同行为
例如:上面我们的Door肯定有个state变量来标志当前的doorr的状态,而且door肯定有touch的方法,这里应用了java多态性
整个代码比较容易理解,而且非常重要
package state;public abstract class DoorState {public final static DoorState CLOSED = new DoorClosed();public final static DoorState CLOSEING = new DoorClosing();public final static DoorState OPEN = new DoorOpen();public final static DoorState OPENING = new DoorOpening();public final static DoorState STAYOPEN = new DoorStayOpen();public abstract DoorState touch();public void complete() {}public abstract DoorState timeout();// 返回状态public String status() {String s = getClass().getName();return s.substring(s.lastIndexOf("."));}}
package state;import java.util.Observable;public class Door2 extends Observable {private DoorState state = DoorState.CLOSED;public void touch(){state = state.touch();}public void complete() {state = state.timeout();}public void timeout() {state = state.timeout();}// 返回状态protected void setStatus(DoorState state) {this.state = state;setChanged();notifyObservers();}}
package state;public class DoorClosed extends DoorState {@Overridepublic DoorState touch() {return DoorState.OPENING;}public DoorState timeout() {return DoorState.CLOSED;}}
package state;public class DoorClosing extends DoorState {@Overridepublic DoorState touch() {return DoorState.OPENING;}public DoorState timeout() {return DoorState.CLOSED;}}
package state;public class DoorOpen extends DoorState { @Overridepublic DoorState touch() {return DoorState.STAYOPEN;}public DoorState timeout() {return DoorState.CLOSEING;}}
package state;public class DoorOpening extends DoorState {@Overridepublic DoorState touch() {return DoorState.CLOSEING;}public DoorState timeout() {return DoorState.CLOSED;}}
package state;public class DoorStayOpen extends DoorState {@Overridepublic DoorState touch() {return DoorState.CLOSEING;}@Overridepublic DoorState timeout() {return DoorState.CLOSED;}}
对于complete没有具体实现,自已懂了就可以了
0 0
- State模式 状态模式
- 状态模式(State Pattern)
- 状态(State)模式
- 状态模式(State Pattern)
- 状态模式(State)
- 状态模式(State)
- State(状态)模式
- 状态模式(State)
- State 状态模式
- 状态模式(State Pattern)
- 状态模式(State)
- State(状态模式)
- Java 状态模式(State)
- 17.状态模式--State
- State(状态)模式
- 状态模式(State Pattern)
- 状态(state)模式
- 状态(State)模式
- Plus One
- Ubuntu下Sublime Text 2的安装
- android jni 引用第三方 so
- Treat your machine fair
- Python利用遗传算法解决八皇后问题
- state状态模式
- 大端模式和小端模式判断
- leetcode题目 寻找两个排序数组的中位数
- 黑马程序员——foundation框架(一)
- mybatis(1)mybatis入门程序
- hdoj 3338 Kakuro Extension 【行进列出 最大流】
- Python实现文件夹深度优先遍历
- 邪恶者@百度游戏关键词 单页收录
- chapter1. 开始