设计模式——模板模式

模板方法(Template Method)

模板方法能重复的使用代码逻辑,让所继承的子类实现的方法按照一定的逻辑顺序执行。

TemplatePatternDemo,主类

public class TemplatePatternDemo {
	   public static void main(String[] args) {
	 
	      Game game = new Cricket();
	      game.play();
	      System.out.println();
	      game = new Football();
	      game.play();      
	   }
}

Game抽象类

其中,play方法的final很重要,防止了子类覆写此方法,打乱了执行顺序。

public abstract class Game {
	   abstract void initialize();
	   abstract void startPlay();
	   abstract void endPlay();
	 
	   //模板
	   public final void play(){
	 
	      //初始化游戏
	      initialize();
	 
	      //开始游戏
	      startPlay();
	 
	      //结束游戏
	      endPlay();
	   }
}

Cricket子类

public class Cricket extends Game {
	 
	   @Override
	   void endPlay() {
	      System.out.println("Cricket Game Finished!");
	   }
	 
	   @Override
	   void initialize() {
	      System.out.println("Cricket Game Initialized! Start playing.");
	   }
	 
	   @Override
	   void startPlay() {
	      System.out.println("Cricket Game Started. Enjoy the game!");
	   }
}

Football子类

public class Football extends Game {
	 
	   @Override
	   void endPlay() {
	      System.out.println("Football Game Finished!");
	   }
	 
	   @Override
	   void initialize() {
	      System.out.println("Football Game Initialized! Start playing.");
	   }
	 
	   @Override
	   void startPlay() {
	      System.out.println("Football Game Started. Enjoy the game!");
	   }
}

解决模板方法子类泛滥:回调(callback)

啥是回调?

回调表示一段可执行的逻辑的引用(或指针),我们把该引用(或者指针)传递到另外一段逻辑(或者方法)里供这段逻辑适时调用。

数据库查询,会先查询全部的,然后选取要的内容,重新封装到结果集中。

如果根据每种情况都创建一个实现类,那么子类太多了。我们应用回调。

下面模拟数据库查询

先定义一个回调处理数据的接口

import java.sql.ResultSet;

public interface ResultSetHandler<T> {
    public T handle(ResultSet rs);
}

创建查询数据库的类

这里的query方法有个参数是一个实现ResultSetHandler接口的对象,最后return的时候会调用这个对象里的handle方法

import java.sql.ResultSet;

public class SimpleJdbcQueryTemplate {
    public <T> T query(String queryString , ResultSetHandler<T> rsHandler){

        //处理逻辑,得到数据
        // connection = getCollection();得到dbconnection
        //stmt = connection.prepareStatement(queryString);
        //...........
        ResultSet rs = null;
        //rs = stmt.excuteQuery();

        //回调
        return rsHandler.handle(rs);
    }
}

这样就根据不同的查询语句,使用回调类处理查询结果。

import java.sql.ResultSet;

public class TestTemplate {
    boolean called = new SimpleJdbcQueryTemplate().query("select * from db ", new ResultSetHandler<Boolean>() {
        @Override
        public Boolean handle(ResultSet rs) {
            //处理逻辑
            return true;
        }
    });
}
考虑柔性负荷的综合能源系统低碳经济优化调度【考虑碳交易机制】(Matlab代码实现)内容概要:本文围绕“考虑柔性负荷的综合能源系统低碳经济优化调度”展开,重点研究在碳交易机制下如何实现综合能源系统的低碳化与经济性协同优化。通过构建包含风电、光伏、储能、柔性负荷等多种能源形式的系统模型,结合碳交易成本与能源调度成本,提出优化调度策略,以降低碳排放并提升系统运行经济性。文中采用Matlab进行仿真代码实现,验证了所提模型在平衡能源供需、平抑可再生能源波动、引导柔性负荷参与调度等方面的有效性,为低碳能源系统的设计与运行提供了技术支撑。; 适合人群:具备一定电力系统、能源系统背景,熟悉Matlab编程,从事能源优化、低碳调度、综合能源系统等相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①研究碳交易机制对综合能源系统调度决策的影响;②实现柔性负荷在削峰填谷、促进可再生能源消纳中的作用;③掌握基于Matlab的能源系统建模与优化求解方法;④为实际综合能源项目提供低碳经济调度方案参考。; 阅读建议:建议读者结合Matlab代码深入理解模型构建与求解过程,重点关注目标函数设计、约束条件设置及碳交易成本的量化方式,可进一步扩展至多能互补、需求响应等场景进行二次开发与仿真验证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值