19、状态模式(设计模式笔记)

2016-10-21  本文已影响41人  yjaal

一、场景

二、核心

用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题结构:

State.java

package cn.itcast.day250.state;
//状态的统一接口
public interface State {
    public void handle();
}

FreeState.java

package cn.itcast.day250.state;
//空闲状态子类
public class FreeState implements State {

    @Override
    public void handle() {
        System.out.println("房屋处于空闲状态");
    }

}

BookedState.java

package cn.itcast.day250.state;
//已预订状态子类
public class BookedState implements State {

    @Override
    public void handle() {
        System.out.println("房间已预订");
    }

}

CheckedInState.java

package cn.itcast.day250.state;
//已入住状态子类
public class CheckedInState implements State {

    @Override
    public void handle() {
        System.out.println("房间已入住");
    }

}

说明:这里我们给出了一个状态接口,接口中是一个某个状态的行为,同时给出了三种不同的实现,分别代表三种不同的状态及其相关的行为。

Context.java

package cn.itcast.day250.state;
//上下文类:表示当前房间的状态,同时在不同状态之间进行切换
public class Context {
    private State state;
    
    public void setState(State s){
        System.out.println("修改状态");
        state = s;
        state.handle();//调用修改后状态的行为
    }
}

说明:这是一个上下文类,这个类主要用于保存当前房间的状态,同时完成状态之间的切换。

Client.java

package cn.itcast.day250.state;

public class Client {
    public static void main(String[] args) {
        Context tx = new Context();
        tx.setState(new FreeState());
    }
}
上一篇 下一篇

猜你喜欢

热点阅读