状态模式(State):当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。
状态模式Demo:
/** * 2018年3月30日下午9:42:50 */ package com.Designpattern; /** * @author xinwenfeng * */ public class TestState { /** * @param args */ public static void main(String[] args) { Context context = new Context(); context.operate(); context.operate(); context.operate(); context.operate(); context.operate(); context.operate(); context.operate(); context.operate(); } } //抽象汽车状态 interface CarState{ public void run(Context context); } //停车状态 class CarStop implements CarState{ @Override public void run(Context context) { System.out.println("停止状态,开始加速"); context.setCarState(new CarSpeedUp()); } } //加速状态 class CarSpeedUp implements CarState{ @Override public void run(Context context) { System.out.println("加速状态,进入匀速行驶"); context.setCarState(new CarRun()); } } //行驶状态 class CarRun implements CarState{ @Override public void run(Context context) { System.out.println("匀速状态,开始减速"); context.setCarState(new CarSpeedDown()); } } //减速状态 class CarSpeedDown implements CarState{ @Override public void run(Context context) { System.out.println("减速状态,停车"); System.out.println("============="); context.setCarState(new CarStop()); } } class Context{ private CarState carState;//维护一个状态 public Context() { carState = new CarStop(); } public CarState getCarState() { return carState; } public void setCarState(CarState carState) { this.carState = carState; } public void operate() { System.out.print("操作>>>"); carState.run(this); } }
结果: