下载 23种设计模式源码 :http://download.csdn.net/download/knight_black_bob/8936043
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
创建型模式,共五种:
工厂方法模式 抽象工厂模式 单例模式 建造者模式 原型模式
结构型模式,共七种:
适配器模式 装饰器模式 代理模式 外观模式 桥接模式 组合模式 享元模式
行为型模式,共十一种:
策略模式 模板方法模式 观察者模式 迭代子模式 责任链模式 命令模式
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
public interface ISendXTask extends Runnable{ public void startTask(); }
public abstract class AbstractSendXTask<T extends BaseEntity> implements ISendXTask { private boolean isRunning = false; private Hashtable<Integer, Message> cache = new Hashtable<Integer, Message>(); public void startTask() { if (isRunning) { return; } try { isRunning = true; run(); } catch (Exception e) { } finally { isRunning = false; } } @Override public void run() { List<T> list = getNeedSendList(); if (list != null && list.size() > 0) { for (T t : list) { try { processOne(t); } catch (QueueFullException e) { try { Thread.sleep(20000); } catch (InterruptedException e1) { e1.printStackTrace(); } break; } } } } public void processOne(T t) throws QueueFullException { preSend(t); if (t.getInsertTime() != null && isOvertime(t)) sendFailedProcess(t); else try { if(send(t)) sendSuccessProcess(t); else sendFailedProcess(t); } catch (QueueFullException e) { throw e; } catch (Exception e) { sendFailedProcess(t); } } public boolean isOvertime(T t) { return (System.currentTimeMillis() - t.getInsertTime().getTime() > getOvertime()); } public long getOvertime() { return 5*60*1000l; } // public Message findMessage(int msgId) // { // Message msg = null; // msg = cache.get(msgId); // if (msg == null) // { // msg = dao.find(msgId); // if (msg != null) // { // if (cache.size() > 100) // cache.clear(); // cache.put(msg.getMsgId(), msg); // } // } // return msg; // } public void preSend(T t) { } public abstract List<T> getNeedSendList(); public abstract boolean send(T pkg) throws QueueFullException; public abstract void sendSuccessProcess(T t); public abstract void sendFailedProcess(T t);
public class BaseEntity { public void setInsertTime(Date date) { } public Date getInsertTime() { return null; } }
public class AndroidMessage extends BaseEntity{ }
public class IOSMessage extends BaseEntity{ }
package 设计模式.模板模式; import java.util.List; /** * @author baoyou E-mail:curiousby@163.com * @version 创建时间:2015年7月8日 下午12:18:11 * 类说明: */ public class AndroidTask extends AbstractSendXTask<AndroidMessage>{ @Override public List<AndroidMessage> getNeedSendList() { // TODO Auto-generated method stub return null; } @Override public boolean send(AndroidMessage pkg) throws QueueFullException { // TODO Auto-generated method stub return false; } @Override public void sendSuccessProcess(AndroidMessage t) { // TODO Auto-generated method stub } @Override public void sendFailedProcess(AndroidMessage t) { // TODO Auto-generated method stub } }
package 设计模式.模板模式; import java.util.List; /** * @author baoyou E-mail:curiousby@163.com * @version 创建时间:2015年7月8日 下午12:18:11 * 类说明: */ public class IOSTask extends AbstractSendXTask<IOSMessage>{ @Override public List<IOSMessage> getNeedSendList() { // TODO Auto-generated method stub return null; } @Override public boolean send(IOSMessage pkg) throws QueueFullException { // TODO Auto-generated method stub return false; } @Override public void sendSuccessProcess(IOSMessage t) { // TODO Auto-generated method stub } @Override public void sendFailedProcess(IOSMessage t) { // TODO Auto-generated method stub } }
捐助开发者
在兴趣的驱动下,写一个免费
的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和PayPal捐助),没钱捧个人场,谢谢各位。
谢谢您的赞助,我会做的更好!