消息队列(生产消费者模型)--结合策略模式

概述
  • 消息队列(生产者-消费者模型)是Java多线程编程中的一个经典问题,主要描述的是生产者和消费者在同一时间段内共用一块存储空间(通常也称为缓冲区),工作时,生产者向缓冲区存放数据,而消费者则从缓冲区中取走数据。

  • 策略模式 是一种行为型模式,定义了一系列的算法,并将每一个算法封装,并且使它们可相互替换。主要解决在有多种算法相似的情况下,使用 if…else 所带来的复杂体现且难以维护的问题。
    抽象策略类(Strategy):定义一个所有算法都支持的通用接口,内容类使用这个接口调用由具体策略实现的算法。
    具体策略类(OperationA、OperationB、OperationC…):实现相应的算法。
    内容类(Context):封装具体的算法实现,提供外部调用方式(上层的调用需要与接口之间有一定的交互)。

  • 本文demo主要功能及角色
    消息队列主要功能包括:消息的发送、缓存和接收;主要角色为MsgBox、Producer、Consumer
    策略模式主要功能包括:消息策略的封装,提供上层调用的方式;主要角色为Context、Strategy、Message(对应具体策略类)

  • 消息队列简单关系模型
    在这里插入图片描述

  • 策略模式uml图
    在这里插入图片描述

  • 项目结构
    在这里插入图片描述

为方便理解,博主将分为策略模式和消息队列两部分进行讲解
  • 策略模式部分
    定义接口Strategy
package com.me.msg;

public interface Strategy {
   

	void doStrategyWork();
}

定义四个具体策略类(用于模拟不同的消息类型,以PhotoMessageStrategy为例,余下三种大体相同稍作修改即可)

package com.me.msg;

import java.text.SimpleDateFormat;
import java.util.Date;

public class PhotoMessageStrategy implements Strategy{
   
	
	SimpleDateFormat df =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

	@Override
	public void doStrategyWork() {
   
		System.out.println("查阅一则图片消息!\t"+df.format(new Date()));
	}
}

消息类Message(对应四种不同消息类型)

package com.me.msg;

public class Message {
   
	private String cmd;
	
	public String getCmd() {
   
		return cmd;
	}
	public void setCmd(String cmd) {
   
		this.cmd 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值