LiftState.java代码如下:
ClosingState.java代码如下:
OpenningState.java代码如下:
RunningState.java代码如下:
StoppingState.java代码如下:
Context.java代码如下:
Client.java代码如下:
运行结果如下:
package com.designPattern.state;
public abstract class LiftState {
protected Context context;
public abstract void open();
public abstract void close();
public abstract void run();
public abstract void stop();
public Context getContext() {
return context;
}
public void setContext(Context context) {
this.context = context;
}
}
ClosingState.java代码如下:
package com.designPattern.state;
public class ClosingState extends LiftState{
@Override
public void open() {
super.context.setLiftState(Context.openningState);
super.context.getLiftState().open();
}
@Override
public void close() {
System.out.println("电梯门关闭");
}
@Override
public void run() {
super.context.setLiftState(Context.runningState);
super.context.getLiftState().run();
}
@Override
public void stop() {
super.context.setLiftState(Context.stoppingState);
super.context.getLiftState().stop();
}
}
OpenningState.java代码如下:
package com.designPattern.state;
public class OpenningState extends LiftState{
@Override
public void open() {
System.out.println("电梯门打开了");
}
@Override
public void close() {
super.context.setLiftState(Context.closingState);
super.context.getLiftState().close();
}
@Override
public void run() {
}
@Override
public void stop() {
}
}
RunningState.java代码如下:
package com.designPattern.state;
public class RunningState extends LiftState{
@Override
public void open() {
}
@Override
public void close() {
}
@Override
public void run() {
System.out.println("电梯上下跑");
}
@Override
public void stop() {
super.context.setLiftState(Context.stoppingState);
super.context.getLiftState().stop();
}
}
StoppingState.java代码如下:
package com.designPattern.state;
public class StoppingState extends LiftState{
@Override
public void open() {
super.context.setLiftState(Context.openningState);
super.context.getLiftState().open();
}
@Override
public void close() {
}
@Override
public void run() {
super.context.setLiftState(Context.runningState);
super.context.getLiftState().run();
}
@Override
public void stop() {
System.out.println("电梯停止了");
}
}
Context.java代码如下:
package com.designPattern.state;
public class Context {
public static final OpenningState openningState = new OpenningState();
public static final ClosingState closingState = new ClosingState();
public static final RunningState runningState = new RunningState();
public static final StoppingState stoppingState = new StoppingState();
private LiftState liftState;
public LiftState getLiftState() {
return liftState;
}
public void setLiftState(LiftState liftState) {
this.liftState = liftState;
this.liftState.setContext(this);
}
public void open(){
this.liftState.open();
}
public void close(){
this.liftState.close();
}
public void run(){
this.liftState.run();
}
public void stop(){
this.liftState.stop();
}
}
Client.java代码如下:
package com.designPattern.state;
public class Client {
public static void main(String[] args) {
Context context = new Context();
context.setLiftState(new ClosingState());
context.open();
context.close();
context.run();
context.stop();
}
}
运行结果如下:
电梯门打开了
电梯门关闭
电梯上下跑
电梯停止了