状态机模式

发布时间:2017-7-1 11:34:29编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"状态机模式 ",主要涉及到状态机模式 方面的内容,对于状态机模式 感兴趣的同学可以参考一下。

现在需要你做一个简单是视频播放器的APP,主要有播放,暂停,停止三个功能,在没学状态机模式之前,你可能会这样来实现:

现抽象个IPlayer接口,定义好你的播放器需要实现的动作和可能的状态字段:

 1 public interface IPlayer {
 2     public static final int STATE_PLAYING = 1;
 3     public static final int STATE_PAUSED = 2;
 4     public static final int STATE_STOPPED = 3;
 5 
 6     public void palyVedio();
 7 
 8     public void pause();
 9 
10     public void stop();
11 }
IPlayer

现在就可以实现IPlayer接口了:

复制代码
 1 public class VedioPlayer implements IPlayer {
 2     public int mCurrentState;
 3 
 4     @Override
 5     public void palyVedio() {
 6         switch (mCurrentState) {
 7         case STATE_PLAYING:
 8             System.out.println(" curent state is palying, do nothing.");
 9         case STATE_PAUSED:
10         case STATE_STOPPED:
11             System.out.println("paly vedio now.");
12             break;
13         default:
14             // would it happen? who care.
15             break;
16         }
17         mCurrentState = STATE_PLAYING;
18     }
19 
20     @Override
21     public void pause() {
22         switch (mCurrentState) {
23         case STATE_PLAYING:
24             System.out.println("pause vedio now");
25             break;
26         case STATE_PAUSED:
27             System.out.println(" curent state is paused, do noting.");
28         case STATE_STOPPED:
29             System.out.println("curent state is stopped,do noting.");
30             break;
31         default:
32             // would it happen? who care.
33             break;
34         }
35         mCurrentState = STATE_PAUSED;
36     }
37 
38     @Override
39     public void stop() {
40         switch (mCurrentState) {
41         case STATE_PLAYING:
42         case STATE_PAUSED:
43             System.out.println(" stop vedio now.");
44         case STATE_STOPPED:
45             System.out.println("curent state is stopped,do noting.");
46             break;
47         default:
48             // would it happen? who care.
49             break;
50         }
51         mCurrentState = STATE_STOPPED;
52     }


上一篇:定时器周期计算公式
下一篇:MySQL索引学习记录

相关文章

关键词: 状态机模式

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款