Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1279162
  • 博文数量: 296
  • 博客积分: 285
  • 博客等级: 二等列兵
  • 技术积分: 2986
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-06 22:04
个人简介

Linuxer, ex IBMer. GNU https://hmchzb19.github.io/

文章分类

全部博文(296)

文章存档

2020年(10)

2019年(15)

2018年(43)

2017年(79)

2016年(79)

2015年(58)

2014年(1)

2013年(8)

2012年(3)

分类: Java

2017-02-21 14:27:28

这里的 这个state pattern 的代码就很不错:

https://sourcemaking.com/design_patterns/state/java/1

另外一个比较简单的代码:

点击(此处)折叠或打开

  1. package statepattern;

  2. interface MobileState{
  3.     public void getState();
  4. }

  5. class Ringing implements MobileState{

  6.     @Override
  7.     public void getState(){
  8.         System.out.println("Mobile is in ringing state");
  9.     }
  10. }

  11. class Silent implements MobileState{

  12.     @Override
  13.     public void getState(){
  14.         System.out.println("Mobile is in silent state");
  15.     }
  16. }

  17. class Vibration implements MobileState{

  18.     @Override
  19.     public void getState(){
  20.         System.out.println("Mobile is in vibration state");
  21.     }
  22. }

  23. class MobileContext implements MobileState{
  24.     private MobileState ms;

  25.     public void setMObileState(MobileState ms){
  26.         this.ms = ms;
  27.     }

  28.     //constructor
  29.     public MobileContext(MobileState ms){
  30.         this.ms = ms;
  31.     }

  32.     public void getState(){
  33.         ms.getState();
  34.     }
  35. }

  36. public class StatePatternDemo1 {
  37.     public static void main(String[] args){
  38.         MobileContext ctx = new MobileContext(new Ringing());
  39.         ctx.getState();
  40.         ctx.setMObileState(new Vibration());
  41.         ctx.getState();
  42.         ctx.setMObileState(new Silent());
  43.         ctx.getState();

  44.     }
  45. }


阅读(427) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~