这里的 这个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. }


10-12 11:09
查看更多