java消息插件开发

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);
	}

}

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值