微信开发一笔记3观察者模式

public interface WeixinMessageHandler {
	/*
	 * 返回nul时表示不是本处理器处理
	 * 
	 */
		public  String processMsg(WeixinRequest request) throws Exception;
}

<span style="font-family: Arial, Helvetica, sans-serif;">public class SubscribeHandler implements WeixinMessageHandler {</span>
	Recommend recommend;
	Berecommend berecommend;
	RecommendServiceImp service=new RecommendServiceImp();
	String msgid="";
	@Override
	public String processMsg(WeixinRequest request) throws Exception {
		System.out.println(match(request));
		if (match(request)) {
			recommend=new Recommend();
			berecommend=new Berecommend();
			msgid=request.getEventKey();
			int recommendid=Integer.parseInt(msgid.substring(msgid.indexOf("_")+1, msgid.length()));
			recommend.setId(recommendid);
			berecommend.setAccount(request.getFromUserName());
			UserInfo user=WeixinApi.getUserInfo(request.getFromUserName());
			berecommend.setRecommendID(recommendid);
			berecommend.setNickname(user.getNickname());
			service.recommend(recommend, berecommend);
			return "";
		}
		return null;
	}
	
	private  boolean match(WeixinRequest request){
		if ("event".equals(request.getMsgType())&&"subscribe".equals(request.getEvent())) {
			return true;
		}
		return false;
	}
	public static void main(String[] args) throws Exception {
		WeixinRequest WX=new WeixinRequest();
		WX.setMsgType("event");
		new SubscribeHandler().processMsg(WX);
	}
}
使用方法:

通过读取配置文件取得实现了WeixinMessageHandler的类路径名    通过反射机制生成对象放入接口集合内

private List<WeixinMessageHandler> handlerList=new ArrayList<WeixinMessageHandler>();

String handlers=config.getInitParameter("handlers");
if (handlers!=null) {
String handlerarray[]=handlers.split(";");
for (String handler : handlerarray) {
try {
WeixinMessageHandler  handle=(WeixinMessageHandler)Class.forName(handler).newInstance();
handlerList.add(handle);
} catch (Exception e) {
e.printStackTrace();
}

for (WeixinMessageHandler handler : handlerList) {
result=handler.processMsg(wxr);
if (result!=null) {
break;//退出循环
}
每次执行foreach循环时   通过调用processMsg方法  通过判断传入的内容是否时该类要处理的  是的话得到返回的数据停止遍历   不是则继续遍历  

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值