一个男人的设计模式:策略模式

本文介绍了一种使用策略模式解决出行方式选择问题的方法。通过定义出行方式接口和具体实现类,实现了算法的相互替换,使得新增出行方式只需实现接口即可,提高了代码的扩展性和维护性。

宅在家里太久了,我想出门溜达溜达!

1 选择出行方式:

1.天气挺好的,步行出门,慢慢悠悠美美哒!
2.骑上我心爱的小摩托,它永远不会堵车!
3.今天要相亲了,我要开着我的东风风神去压压场子!

2 传统的选择方案

使用if…else 或者switch case 选择不同的方案,如下代码

public class Method {
    public static void main(String[] args) {
        String method = "某种出行方式";
        if("步行".equalsIgnoreCase(method)){
            //todo
        }else if("小摩托".equalsIgnoreCase(method)){
            //todo
        }else if("东风风神".equalsIgnoreCase(method)){
            //todo
        }else{
            System.out.print("家里蹲");
        }
    }
}

2.1 存在的问题

我有钱了,买了辆飞机,或者太空船,那么这里的出行方式的代码就需要再次修改.这里的出行方式和调用出行动作的对象紧密耦合

3 策略模式

定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。

出行方式接口

public interface IStrategy {

    public void travelMode();
}

出行实现:

public class Walk implements IStrategy{

    @Override
    public void travelMode() {
        System.out.print("天气挺好的,步行出门,慢慢悠悠美美哒!");
    }
}
public class Motorcycle implements IStrategy{

    @Override
    public void travelMode() {
        System.out.print("骑上我心爱的小摩托,它永远不会堵车!");
    }
}
public class DongfengFengshen implements IStrategy{

    @Override
    public void travelMode() {
        System.out.print("今天要相亲了,我要开着我的东风风神去压压场子!");
    }
}

使用出行方式的人

public class AMan {
    private IStrategy strategy;
    public AMan(IStrategy strategy){
        this.strategy = strategy;
    }
    public void travel(){
        System.out.println("我要出门了:");
        //根据strategy的具体实现类来选择出行方式
        strategy.travelMode();
    }
    //这里定义set方法可以再运行是改变出行的行为
    public void setStrategy(IStrategy strategy){
        this.strategy = strategy;
    }
}

现在要出门了:

public class Application {

    public static void main(String[] args) {

        AMan aman = new AMan(new Walk());
        aman.travel();
        aman.setStrategy(new Motorcycle());
        aman.travel();
        aman.setStrategy(new DongfengFengshen());
        aman.travel();

    }
}

如果后期需要新增出行方式,只需要实现对应的接口即可,出门的时候选择对应的出行方式即可.

4 小结

策略模式:分别封装行为接口,实现算法族,超类里放行为接口对象,在子类里具体设定行为对象。原则就是:分离变化部分,封装接口,基于接口编程各种功能。此模式让行为算法的变化独立于算法的使用者。

独立储能的现货电能量与调频辅助服务市场出清协调机制(Matlab代码实现)内容概要:本文围绕“独立储能的现货电能量与调频辅助服务市场出清协调机制”展开,提出了一种基于Matlab代码实现的优化模型,旨在协调独立储能系统在电力现货市场与调频辅助服务市场中的联合出清问题。文中结合鲁棒优化、大M法和C&CG算法处理不确定性因素,构建了多市场耦合的双层或两阶段优化框架,实现了储能资源在能量市场和辅助服务市场间的最优分配。研究涵盖了市场出清机制设计、储能运行策略建模、不确定性建模及求解算法实现,并通过Matlab仿真验证了所提方法的有效性和经济性。; 适合人群:具备一定电力系统基础知识和Matlab编程能力的研究生、科研人员及从事电力市场、储能调度相关工作的工程技术人员。; 使用场景及目标:①用于研究独立储能在多电力市场环境下的协同优化运行机制;②支撑电力市场机制设计、储能参与市场的竞价策略分析及政策仿真;③为学术论文复现、课题研究和技术开发提供可运行的代码参考。; 阅读建议:建议读者结合文档中提供的Matlab代码与算法原理同步学习,重点关注模型构建逻辑、不确定性处理方式及C&CG算法的具体实现步骤,宜在掌握基础优化理论的前提下进行深入研读与仿真调试。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值