Android的开发之&java23中设计模式------状态模式

23 篇文章 0 订阅
22 篇文章 0 订阅
public class Room {
    /**
     * 房间的三个状态
     */
    State freeTimeState;    //空闲状态
    State checkInState;     //入住状态
    State bookedState;      //预定状态

    State state;

    public Room(){
        freeTimeState=new FreeTimeState(this);
        checkInState=new CheckInState(this);
        bookedState=new BookedState(this);

        state=freeTimeState;//初始状态为空闲
    }

    /**
     * 预定房间
     */
    public void boookRoom(){
        state.bookRoom();
    }

    /**
     * 退订房间
     */
    public void unsubscribeRoom(){
        state.unsubscribeRoom();
    }

    /**
     * 入住
     */
    public void checkInRoom(){
        state.checkInRoom();
    }

    /**
     * 退房
     */
    public void checkOutRoom(){
        state.checkOutRoom();
    }

    public String toString(){
        return "该房间的状态是:"+getState().getClass().getName();
    }

    public State getState() {
        return state;
    }

    public void setState(State state) {
        this.state = state;
    }

    public State getFreeTimeState() {
        return freeTimeState;
    }

    public void setFreeTimeState(State freeTimeState) {
        this.freeTimeState = freeTimeState;
    }

    public State getCheckInState() {
        return checkInState;
    }

    public void setCheckInState(State checkInState) {
        this.checkInState = checkInState;
    }

    public State getBookedState() {
        return bookedState;
    }

    public void setBookedState(State bookedState) {
        this.bookedState = bookedState;
    }
}



/**
 * Created by Administrator on 2017-10-11.
 * 预定状态房间只能退定
 */

public class BookedState implements State {
    Room hotelManagement;

    public BookedState(Room hotelManagement){
        this.hotelManagement=hotelManagement;
    }

    @Override
    public void bookRoom() {
        System.out.println("该房间已近给预定了...");
    }

    @Override
    public void unsubscribeRoom() {
        System.out.println("退订成功,欢迎下次光临...");
        hotelManagement.setState(hotelManagement.getFreeTimeState()); //变成空闲状态
    }

    @Override
    public void checkInRoom() {
        System.out.println("入住成功...");
        hotelManagement.setState(hotelManagement.getCheckInState());
    }

    @Override
    public void checkOutRoom() {
        //不需要做操作
    }
}
/**
 * Created by Administrator on 2017-10-11.
 * 入住可以退房
 */

public class CheckInState implements State {
    Room hotelManagement;

    public CheckInState(Room hotelManagement){
        this.hotelManagement=hotelManagement;
    }

    @Override
    public void bookRoom() {
        System.out.println("该房间已经入住了...");
    }

    @Override
    public void unsubscribeRoom() {
        //不需要做操作
    }

    @Override
    public void checkInRoom() {
        System.out.println("该房间已经入住了...");
    }

    @Override
    public void checkOutRoom() {
        System.out.println("退房成功...");
        hotelManagement.setState(hotelManagement.getFreeTimeState());
    }
}
public class FreeTimeState implements State {
    Room hotelManagement;

    public FreeTimeState(Room hotelManagement){
        this.hotelManagement=hotelManagement;
    }
    @Override
    public void bookRoom() {
        System.out.print("您已经成功预定了");
        //状态变为已预定
        hotelManagement.setState(hotelManagement.getBookedState());
    }

    @Override
    public void unsubscribeRoom() {
        //不需要做操作
    }

    @Override
    public void checkInRoom() {
        System.out.print("您已经成功入住了");
        //状态变为已入住
        hotelManagement.setState(hotelManagement.getCheckInState());
    }

    @Override
    public void checkOutRoom() {
        //不需要做操作
    }
}
public interface State {
    /**
     * 预订房间
     */
    public void bookRoom();

    /**
     * 退订房间
     */
    public void unsubscribeRoom();

    /**
     * 入住
     */
    public void checkInRoom();

    /**
     * 退房
     */
    public void checkOutRoom();
}
public class StateMethodActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_state_method);
        //有2间房
        Room[] rooms=new Room[2];
        //初始化
        for (int i=0;i<rooms.length;i++){
            rooms[i]=new Room();
        }
        //第一间房
        rooms[0].boookRoom();//预定
        rooms[0].checkInRoom();//入住
        rooms[0].boookRoom();//预定
        System.out.print(rooms[0]);
        System.out.print("**********************************");
        //第二间房
        rooms[1].checkInRoom();
        rooms[1].boookRoom();
        rooms[1].checkOutRoom();
        rooms[1].boookRoom();
        System.out.print(rooms[1]);
    }
}

github地址:https://github.com/zyj18410105150/DesignMode

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值