下載下傳 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:[email protected]
* @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:[email protected]
* @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捐助),沒錢捧個人場,謝謝各位。

謝謝您的贊助,我會做的更好!