下载 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捐助),没钱捧个人场,谢谢各位。
谢谢您的赞助,我会做的更好!
相关推荐
设计模式 java 模板模式
java设计模式之模板模式,实例子说明模板模式的使用场景。
java的23种常用设计模式:模板方法模式
设计模式之模板模式。实现了一个设计模式。
主要介绍了详解JAVA设计模式之模板模式的的相关资料,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
本文实例讲述了PHP设计模式之模板模式定义与用法。分享给大家供大家参考,具体如下: 模板模式准备一个抽象类,将部分逻辑以具体方法以及具体构造形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的...
设计模式之模板方法模式Java实现和UML类设计图
设计模式的模板方法模式的例子,希望对大家有用~~~~~~~~
Java设计模式之模板方法模式.rarJava设计模式之模板方法模式.rar
设计模式--模板方法模式java例子
主要介绍了php设计模式之模板模式,基于星际争霸游戏案例形式分析了php模板模式相关原理与使用技巧,需要的朋友可以参考下
设计模式课程设计模板
本文实例讲述了Android编程设计模式之模板方法模式。分享给大家供大家参考,具体如下: 一、介绍 在面向对象开发过程中,通常会遇到这样的一个问题,我们知道一个算法所需的关键步骤,并确定了这些步骤的执行顺序,...
主要介绍了Java设计模式之模板模式(Template模式)介绍,定义一个操作中算法的骨架,将一些步骤的执行延迟到其子类中,需要的朋友可以参考下
java设计模式中的模板模式,纯Java代码
设计模式之模板方法测试代码