状态模式

定义

状态对象模式,是对象的行为模式

对象在不同状态下的“行为”包装到不同的状态类里面

状态对象自己觉得合适进行状态转移

通过使用多态性原则,可以动态改变环境类Context的属性State的内容,使其从指向一个具体状态类变换到指向另一个具体状态类,从而使环境类的行为由不同的具体状态类来执行。

多态性是状态模式的核心,一个对象的行为取决于一个或多个动态变化的属性,外界事件来决定状态的转换。

UML图

状态模式UML图

角色

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

public interface State {

    void simpleOperation();
}

具体状态角色:每一个具体状态类都实现了环境的一个状态所对应的行为。

public class ConcreteState implements State {

    @Override
    public void simpleOperation() {
        System.out.println("ConcreteState");
    }
}

环境角色:定义客户端所感兴趣的接口,并且保留一个具体状态类的实例。

public class Context {

    private State state;

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

    public void simpleOperation() {
        state.simpleOperation();
    }
}
优缺点

优点

1、枚举可能的状态,在枚举状态之前需要确定状态种类。

2、将所有与某个状态有关的行为放到一个类中,并且可以方便地增加新的状态,只需要改变对象状态即可改变对象的行为。

3、免于大量的条件转换语句,使程序实际上更容易维护。

4、可以让多个环境对象共享一个状态对象,从而减少系统中对象的个数。

缺点

会造成大量小的状态类,增加类和对象的个数。

什么时候使用

1.一个对象的行为依赖于它所处的状态,对象的行为必须随其状态的改变而改变。

2.对象在某个方法里依赖于一重或多重条件转移语句,其中有大量的代码。状态模式把条件转移语句的每一个分支都包装到一个单独的类里,这使得这些条件转移分支能够以类的方式独立存在和衍化。维护这些独立的类也就不再影响到系统的其他部分。

状态模式与策略模式

说实在的,它们俩非常像。

但是,即便是孪生兄弟也是有差别的。

策略模式

环境角色只有一个状态;

策略模式的环境类自己选择一个具体策略类;

策略模式所选的策略往往并不明显地告诉客户端它所选择的具体策略。

状态模式

环境角色有明显的状态转移,在环境类的生命周期里面,会有几个不同的状态对象被使用;

状态模式环境类被外在的原因放进一个具体状态中;

状态模式里,环境角色所处的状态是明显告诉给客户端的。

还有一个重要的差别:策略模式封装的是“算法”,状态模式封装的是“状态”。

附上一个图,孪生兄弟之间的对话

图片来自《Head First设计模式》

内容概要:该论文探讨了一种基于粒子群优化(PSO)的STAR-RIS辅助NOMA无线通信网络优化方法。STAR-RIS作为一种新型可重构智能表面,能同时反射和传输信号,与传统仅能反射的RIS不同。结合NOMA技术,STAR-RIS可以提升覆盖范围、用户容量和频谱效率。针对STAR-RIS元素众多导致获取完整信道状态信息(CSI)开销大的问题,作者提出一种在不依赖完整CSI的情况下,联合优化功率分配、基站波束成形以及STAR-RIS的传输和反射波束成形向量的方法,以最大化总可实现速率并确保每个用户的最低速率要求。仿真结果显示,该方案优于STAR-RIS辅助的OMA系统。 适合人群:具备一定无线通信理论基础、对智能反射面技术和非正交多址接入技术感兴趣的科研人员和工程师。 使用场景及目标:①适用于希望深入了解STAR-RIS与NOMA结合的研究者;②为解决无线通信中频谱资源紧张、提高系统性能提供新的思路和技术手段;③帮助理解PSO算法在无线通信优化问题中的应用。 其他说明:文中提供了详细的Python代码实现,涵盖系统参数设置、信道建模、速率计算、目标函数定义、约束条件设定、主优化函数设计及结果可视化等环节,便于读者理解和复现实验结果。此外,文章还对比了PSO与其他优化算法(如DDPG)的区别,强调了PSO在不需要显式CSI估计方面的优势。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值