设计模式之状态

状态模式是一种行为设计模式,用于处理对象在其内部状态改变时相应行为的改变。它将状态相关的判断逻辑转移到独立的状态类中,使得代码更加清晰。模式包含环境(Context)、抽象状态(State)和具体状态(Concrete State)角色。在实际应用中,如线程状态转换,通过状态模式可以简化对象在不同状态间的行为管理。
摘要由CSDN通过智能技术生成

一.简介

程序设计中有些对象是有状态的对象。当有状态的对象与外部事件产生互动时,其内部状态会发生改变,从而使得其行为也随之发生改变。

传统的处理方法是采用if-else 语句判断处理多种状态,状态模式的思想是:把“判断逻辑”提取出来,放到一系列的状态类当中,状态对象在其内部状态发生改变时改变其行为。

模式结构:
1.环境(Context)角色:它定义了客户感兴趣的接口,维护一个当前状态,并将与状态相关的操作委托给当前状态对象来处理。

2.抽象状态(State)角色:定义一个接口,用以封装环境对象中的特定状态所对应的行为。

3.具体状态(Concrete State)角色:实现抽象状态所对应的行为。

二.实现

线程状态简单转换:新建、就绪、运行、阻塞、停止

package com.vincent;




/**
 * 设计模式
 *
 */
public class App {
   
    public static void main( String[] args ) throws Exception {
   
        ThreadContext context = new ThreadContext();
        context.start();
        context.getCpu();
        context.block();
        context.getCpu();
        context.stop();
    }
}



class ThreadContext{
   
    AbstructThreadState state = new New();


    public AbstructThreadState getState() {
   
        return state;
    }


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


    public void start(){
   
        state.start(this);
    }

    pub
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值