`

状态设计模式

 
阅读更多
package com;

public class StateTest{
	public static void  main(String[] args) {
		Man m = new Man();
		m.request();
		
		m.setState(new ChildrenState());
		m.request();
	}
}

abstract class State{
	private String s;
	abstract public void handle(Man m);
	
	public String getS() {
		return s;
	}
	public void setS(String s) {
		this.s = s;
	}
}

class BabyState extends State{
	public BabyState() {
		// TODO Auto-generated constructor stub
		this.setS("Baby");
	}
	@Override
	public void handle(Man m) {
		// TODO Auto-generated method stub
		System.out.println("i am Baby");
		System.out.println("i will drink milk");
	}
}

class ChildrenState extends State{
	public ChildrenState() {
		// TODO Auto-generated constructor stub
		this.setS("children");
	}

	@Override
	public void handle(Man m) {
		// TODO Auto-generated method stub
		System.out.println("i am children");
		System.out.println("i will go to school");
	}
	
}

class AdultState extends State{
	public AdultState() {
		// TODO Auto-generated constructor stub
		this.setS("adult");
	}
	@Override
	public void handle(Man m) {
		// TODO Auto-generated method stub
		System.out.println("i am adult");
		System.out.println("i will marry");
		System.out.println("i will make out my baby");
	}
	
}

class OldState extends State{
	public OldState() {
		// TODO Auto-generated constructor stub
		this.setS("i am old");
	}
	@Override
	public void handle(Man m) {
		// TODO Auto-generated method stub
		System.out.println("i am old");
		System.out.println("i will Retirement");
	}
}

class Man{
	private State s;
	public Man() {
		// TODO Auto-generated constructor stub
		this.s = new BabyState(); 
	}
	public void request(){
		s.handle(this);
	}
	
	public void setState(State s){
		this.s = s;
	}
}


结果:
i am Baby
i will drink milk
i am children
i will go to school
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics