您的位置:首页 > 编程语言 > Java开发

责任链模式(JAVA设计模式)

2014-01-07 17:26 253 查看
这是一个CMM短彩信发送功能中用到的责任链设计模式。

public abstract class PushHandle {

//下一次运行内容
private PushHandle nextHandle;

public PushHandle(PushHandle nextHandle){
this.nextHandle = nextHandle;
}
public boolean sendPush(TaskPushMessage message){
boolean r = handle(message);
if(!r){
if(nextHandle != null){
nextHandle.sendPush(message);//关键代码
}
}
return r;
}
protected abstract boolean handle(TaskPushMessage message);
}

public class WapPushHandle extends PushHandle {

public WapPushHandle(PushHandle nextHandle){
super(nextHandle);
}

@Override
protected boolean handle(TaskPushMessage message) {
if(PUSHTYPE.WAPPUSH.getValue().equals(message.getTaskContent().getPushType())){
List<String> phoneNumbers = new ArrayList<String>();
for(TaskMember member : message.getTaskMembers()){
phoneNumbers.add(member.getPhoneNumber());
}
Content content = ServiceFactory.getContentService().get(message.getTaskContent().getContentID());
if(content != null){
return PushSmsSender.sendWapPush(phoneNumbers, content.getContent(), "");
}
}
return false;
}

}
public class MMSHandle extends PushHandle {

public MMSHandle(PushHandle nextHandle){
super(nextHandle);
}

@Override
protected boolean handle(TaskPushMessage message) {
// TODO Auto-generated method stub
return true;
}

}

public class SMSHandle extends PushHandle {

public SMSHandle(PushHandle nextHandle){
super(nextHandle);
}

@Override
protected boolean handle(TaskPushMessage message) {
if(PUSHTYPE.SMS.getValue().equals(message.getTaskContent().getPushType())){
List<String> phoneNumbers = new ArrayList<String>();
for(TaskMember member : message.getTaskMembers()){
phoneNumbers.add(member.getPhoneNumber());
}
Content content = ServiceFactory.getContentService().get(message.getTaskContent().getContentID());
if(content != null){
return PushSmsSender.sendMessage(phoneNumbers, content.getContent());
}
}
return false;
}

}

public final class PushBuilder {

private final static PushBuilder builder = new PushBuilder();
private SMSHandle handle = null;

private PushBuilder(){
//初始化push业务
WapPushHandle wapPush = new WapPushHandle(null);
MMSHandle mms = new MMSHandle(wapPush);
handle = new SMSHandle(mms);
}

/**
* 提取实例
*/
public static PushBuilder getInstance(){
return builder;
}

/**
* 发送push业务
*/
public boolean pushHandle(TaskPushMessage message){
return handle.sendPush(message);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: