https://sourcemaking.com/design_patterns/state/java/1
另外一个比较简单的代码:
点击(此处)折叠或打开
- package statepattern;
- interface MobileState{
- public void getState();
- }
- class Ringing implements MobileState{
- @Override
- public void getState(){
- System.out.println("Mobile is in ringing state");
- }
- }
- class Silent implements MobileState{
- @Override
- public void getState(){
- System.out.println("Mobile is in silent state");
- }
- }
- class Vibration implements MobileState{
- @Override
- public void getState(){
- System.out.println("Mobile is in vibration state");
- }
- }
- class MobileContext implements MobileState{
- private MobileState ms;
- public void setMObileState(MobileState ms){
- this.ms = ms;
- }
- //constructor
- public MobileContext(MobileState ms){
- this.ms = ms;
- }
- public void getState(){
- ms.getState();
- }
- }
- public class StatePatternDemo1 {
- public static void main(String[] args){
- MobileContext ctx = new MobileContext(new Ringing());
- ctx.getState();
- ctx.setMObileState(new Vibration());
- ctx.getState();
- ctx.setMObileState(new Silent());
- ctx.getState();
- }
- }