状态模式

来源:互联网 发布:surge mac 下载 编辑:程序博客网 时间:2024/04/30 17:45
[java] view plaincopy
  1. //表示状态的接口类  
  2. public interface State {  
  3.     void smile();  
  4.     void cry();  
  5.     void say();  
  6. }  
[java] view plaincopy
  1. //高兴的状态  
  2. public class HappyState implements State{  
  3.     @Override  
  4.     public void cry() {  
  5.         System.out.println("高兴的哭");  
  6.     }  
  7.     @Override  
  8.     public void say() {  
  9.         System.out.println("高兴的说");  
  10.     }  
  11.     @Override  
  12.     public void smile() {  
  13.         System.out.println("高兴的笑");  
  14.     }  
  15. }  
[java] view plaincopy
  1. //不高兴的状态  
  2. public class UnHappyState implements State{  
  3.     @Override  
  4.     public void cry() {  
  5.         System.out.println("伤心的哭");  
  6.     }  
  7.     @Override  
  8.     public void say() {  
  9.         System.out.println("不高兴的说");  
  10.     }  
  11.     @Override  
  12.     public void smile() {  
  13.         System.out.println("不高兴的笑");  
  14.     }  
  15. }  
[java] view plaincopy
  1. public class MM{  
  2.     private State state = new HappyState();//在这里的状态决定了mm的行为  
  3.     private String name;  
  4.     public MM(State state){//可以在外部传递mm的状态  
  5.         this.state=state;  
  6.     }  
  7.     public MM(){}  
  8.     public String getName() {  
  9.         return name;  
  10.     }  
  11.     public void setName(String name) {  
  12.         this.name = name;  
  13.     }  
  14.     public void cry() {  
  15.         state.cry();  
  16.     }  
  17.     public void say() {  
  18.         state.say();  
  19.     }  
  20.     public void smile() {  
  21.         state.smile();  
  22.     }  
  23. }  
[java] view plaincopy
  1. public class Test {  
  2.     public static void main(String[] args) {  
  3.         MM mm = new MM(new HappyState());  
  4.         mm.cry();  
  5.         MM mm1=new MM(new UnHappyState());  
  6.         mm1.cry();  
  7.         /** 
  8.          * 运行结果: 
  9.          * 高兴的哭 
  10.          * 伤心的哭 
  11.          */  
  12.     }  
  13. }