比如酒店房间有不同的状态,通过共有的类去设置酒店不同的状态,如空闲,已入住,已预订。
package state;
public interface State {
void handle();
}
//空闲房价实现State借口,重写handle方法
package state;
public class FreeState implements State {
@Override
public void handle() {
// TODO Auto-generated method stub
System.out.println("房价空闲!");
}
}
package state;
public class CheckedState implements State {
@Override
public void handle() {
// TODO Auto-generated method stub
System.out.println("房价已预订!别人不能定");
}
}
package state;
public class BookedState implements State {
@Override
public void handle() {
// TODO Auto-generated method stub
System.out.println("房间已入住,请勿打扰");
}
}
//改变房间的状态类,用于操作各个放房间的类。
package state;
public class HomeContext {
private State state;
public void setState(State s){
System.out.println("修改状态");
state=s;
state.handle();
}
}
//测试一下改变状态的类
package com.state;
public class Client {
public static void main(String[] args) {
HomeContext htc=new HomeContext();
htc.setState(new FreeState());
}
}