`

java消息插件开发

    博客分类:
  • j2se
 
阅读更多
package my.addon;
public interface BaskAddon {
}

 

package my.addon;
import my.domain.Message;
public interface MessageAddon extends BaskAddon {
	/** 在发送消息后执行 */
	public abstract void onAfterSend(Message message);
	/** 在接收到消息后执行 */
	public abstract void onAfterReveive(Message message);
}

 

package my.addon;
import my.domain.Message;
public class MyPlug1 implements MessageAddon{
	public void onAfterReveive(Message message) {
		System.out.println("onAfterReveive我的插件1");
		System.out.println("添加短信通知他收邮件");
	}
	public void onAfterSend(Message message) {
		System.out.println("onAfterSend我的插件1");
		System.out.println("添加短信通知他收邮件");
	}
}

 

package my.domain;
public abstract class Message {
	private String title;
	private String content;
}

 

package my.domain;
public class SendMessage extends Message {
}

 

package my.event;

import java.util.EventObject;

public class BaskEvent extends EventObject {
	public BaskEvent(Object source) {
		super(source);
	}
}

 

package my.event;

import my.domain.Message;

public class MessageEvent extends BaskEvent{
    /**  产生事件所对应的消息 */
    private Message message;
    public MessageEvent(Object source, Message message){
        super(source);
        this.message = message;
    }

    /**  获取事件对应的消息 */
    public Message getMessage() {
        return message;
    }
}

 

package my.listener;

import java.util.EventListener;

public interface BaskEventListener extends EventListener {
}

 

package my.listener;

import my.event.MessageEvent;

public interface MessageEventListener extends BaskEventListener {
	void onMessageEvent(MessageEvent event);
}

 

package my.manager;

import java.util.List;

import my.addon.MessageAddon;
import my.domain.SendMessage;
import my.event.MessageEvent;
import my.listener.MessageEventListener;

public class MessageAddonManager implements MessageEventListener {
	/**
	 * 消息插件
	 */
	private List<MessageAddon> messageAddons;

	public void onMessageEvent(MessageEvent event) {
		if (messageAddons != null) {
			for (MessageAddon messageAddon : messageAddons) {
				if (event.getMessage() instanceof SendMessage) {// 发送的消息
					messageAddon.onAfterSend(event.getMessage());
				} else {// 接收的消息
					messageAddon.onAfterReveive(event.getMessage());
				}
			}
		}
	}

	public List<MessageAddon> getMessageAddons() {
		return messageAddons;
	}

	public void setMessageAddons(List<MessageAddon> messageAddons) {
		this.messageAddons = messageAddons;
	}
}

 

package my.manager;

import java.util.List;

import my.domain.Message;
import my.domain.SendMessage;
import my.event.MessageEvent;
import my.listener.MessageEventListener;

public class SendMessageService {
	List<MessageEventListener> messageEventListeners;

	public List<MessageEventListener> getMessageEventListeners() {
		return messageEventListeners;
	}

	public void setMessageEventListeners(List<MessageEventListener> messageEventListeners) {
		this.messageEventListeners = messageEventListeners;
	}

	/** 保存并发送消息 */
	public void addAndSendMessage(SendMessage sendMsg) {
		// addSendMessage(sendMsg);// 保存发送消息,但不发送
		// fireMessageEvent(sendMsg);// 发布发送消息的事件
		// operateReceiveMsg(sendMsg);// 插入收件箱
	}

	/** 发送消息,在发送前需要先更新发件箱中对应的发送信息。 */
	public void sendMessage(SendMessage sendMsg) {
		// sendMsg.setCreateTime(new Date().toLocaleString());
		// sendMsgDao.updateSendMessage(sendMsg);// 更新消息
		// fireMessageEvent(sendMsg);// 发布发送消息的事件
		// operateReceiveMsg(sendMsg);// 插入收件箱
	}

	private void operateReceiveMsg(SendMessage sendMsg) {
	}
	/**
     * 产生一个消息事件
     * @param message
     */
    protected void fireMessageEvent(Message message){
        if(messageEventListeners != null){
            MessageEvent msgEvent = new MessageEvent(this,message);
            for (MessageEventListener listener:messageEventListeners){
                listener.onMessageEvent(msgEvent);
            }
        }
    }
}

 

 

 

package my.manager;

import java.util.ArrayList;
import java.util.List;

import my.addon.MessageAddon;
import my.addon.MyPlug1;
import my.listener.MessageEventListener;

public class SystemInit {
	public void init() {
		List<MessageAddon> messageAddons = new ArrayList<MessageAddon>();
		messageAddons.add(new MyPlug1());
		new MessageAddonManager().setMessageAddons(messageAddons);
		List<MessageEventListener> messageEventListeners = new ArrayList<MessageEventListener>();
		messageEventListeners.add(new MessageAddonManager());
		new SendMessageService().setMessageEventListeners(messageEventListeners);
	}

}

 

 

 

分享到:
评论

相关推荐

    java软件插件开发模式源码

    当我们结合Java插件开发模式和Maven时,我们可以创建一个模块化、可维护且高度可扩展的系统。 **Maven简介** Maven是Apache Software Foundation开发的一款项目管理工具,它基于项目对象模型(Project Object Model...

    基于java的插件开发

    基于java开发平台的插件开发,为爱好者指明了方向。

    JCOP Eclipse javacard 插件

    【JCOP Eclipse javacard 插件】是一个专为Eclipse集成开发环境设计的扩展工具,主要用于支持Java Card应用的开发、调试和测试。Java Card技术是Sun Microsystems(现为Oracle)推出的一种在智能卡、SIM卡等微型设备...

    阿里java开发规范插件idea eclipse

    阿里Java开发规范插件是为Java开发者提供的一种工具,它主要应用于IntelliJ IDEA和Eclipse这两个主流的Java集成开发环境(IDE)。该插件旨在帮助开发者遵循阿里巴巴制定的Java编码规范,提升代码质量和可读性,从而...

    Jcop的JAVA开发插件

    **features**,在Eclipse插件开发中,"features"目录通常包含插件的特性定义。每个特性是一个逻辑集合,由一组相关的插件组成,定义了插件的功能和依赖关系。 **plugins**,这个目录存放的是实际的插件组件,它们是...

    eclipse javacard 开发插件

    Eclipse Javacard开发插件,也称为jcde,是一种强大的工具,它将Java Card开发环境JCDK(Java Card Development Kit)的功能与流行的Eclipse集成开发环境(IDE)相结合,为开发者提供了便捷的平台来创建、编译和调试...

    支持Java热部署的插件

    而Java热部署插件则解决了这个问题,使得开发流程更加流畅,提高了开发效率。 Java热部署主要涉及到JVM(Java虚拟机)和类加载器(ClassLoader)的工作机制。JVM在运行时会加载类文件到内存中,当类被修改后,热...

    JavaME 插件(MyEclipse)

    总的来说,MyEclipse的JavaME插件为JavaME开发者提供了一个全面且高效的开发环境,涵盖了从项目创建、编码、调试、测试到发布的整个生命周期,是JavaME应用开发的重要助手。对于想要进入移动开发领域的程序员来说,...

    我的java 插件1 插件8

    总的来说,这个压缩包可能包含一个Java插件开发工具和一个JasperReports设计工具,其中readme文件提供了详细信息,而JasperAssistant可能是用于创建和管理报表的工具。学习和使用这些插件,开发者可以提升其在Java...

    Java开发插件

    Java开发插件是一种用于增强Java开发环境的工具,旨在提高开发效率并提供更丰富的功能。在本案例中,我们关注的是一个名为“Java可视化开发插件”,它与EMF( Eclipse Modeling Framework)有关,因为文件名中提到了...

    Cell插件IE&JAVA开发示例

    在Java插件开发中,这可能是指插件加载时的初始位置或设置。 7. **开发示例**:示例代码是学习新技能的重要工具,它们提供了实际操作的例子,帮助开发者理解如何将理论知识应用到实践中。在这个示例中,开发者可能...

    java插件开发精品指南

    Java插件开发是一种扩展应用程序功能的有效方式,它允许开发者通过编写特定的代码模块来增加或修改已有程序的能力。本精品指南将深入探讨Java插件开发的各个方面,为想要涉足这一领域的学习者提供全面的指导。 首先...

    我的java 插件1 插件7

    Java插件系统是Java开发中的一个重要组成部分,它允许开发者通过扩展和定制已有的应用程序来增强其功能。在Java世界中,插件通常是以独立模块的形式存在,可以方便地被加载和卸载,使得软件具有更好的可扩展性和灵活...

    java开发GUI插件

    Java开发GUI插件是构建图形用户界面(GUI)的一种方式,它允许开发者为各种开发工具创建自定义的可视化组件和工作流程。GUI插件通常用于提高开发效率,提供定制化的编辑器、视图或者增强现有工具的功能。在Java中,...

    java报表插件FineReport在开发过程中如何调试插件详细教程

    - **Eclipse IDE**:主流的Java集成开发环境之一,支持插件开发及调试。 - **FineReport报表工具**:本教程的目标产品,用于报表设计和展示。 - **必要的库文件(JAR包)**:为了能够顺利启动设计器并加载插件,需要...

    java插件

    在IT领域,尤其是软件开发中,Java插件被广泛应用于各种开发工具、浏览器和操作系统环境中,以提升用户体验和开发效率。本文将深入探讨Java插件的相关知识点,并参考博文《JBuilder 2008 R2 Enterprise Trial》。 ...

    真正的JAVA快速开发插件

    插件优势: 1. 用插件自动建表,表之间的联系。 2. 自动生成DAO,BIZ,ACTION,JSP增删改查页面。 3. 项目负责人员只需要设计好数据库中有哪些表,表里有哪些字段以及表间的关系,然后用EXCEL统计出来,其它的交给...

    JAVA 实时运行环境插件

    1. **浏览器设置**:确保浏览器的Java插件启用,因为某些浏览器默认可能会禁用或者移除Java支持。 2. **安全设置**:Java的安全设置可能阻止了Applet的运行。用户需要在Java控制面板中调整安全级别,或者添加信任的...

Global site tag (gtag.js) - Google Analytics