下载 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捐助),没钱捧个人场,谢谢各位。
谢谢您的赞助,我会做的更好!