設計模式應用之Template method模式
在專案中應用Template method模式
類圖:
http://blog.itpub.net/get/11/template%20method.jpg
Author:husthxd
From:www.itpub.net
Msn:
模板方法模式達到的效果是公用的實現往父類中移動,特定的操作由子類來完成。應用模板模式可以實現類似如下的需求:
1. 在某個操作前執行某些檢查操作,但各個模組的檢查的操作是不同的
2. 在某個操作前或後執行某些前置後後置的動作,而各個模組的操作是不同的。
3. 等等
示例程式碼如下:
package test.pattern;
import org.apache.log4j.Logger;
import javax.servlet.http.HttpServletRequest;
import java.sql.Connection;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Description : 各模組流程處理基類
* Author : husthxd
* Date: 2005-1-10
* Version 1.0
*/
public abstract class abstractWorkFlowProcessMgr {
static Logger logger = Logger.getLogger(abstractWorkFlowProcessMgr.class);
/**
* 初始化,子類繼承,設定流程id
*/
protected abstract void doInitPocessid();
/**
* 判斷操作是否可以繼續,可以繼續返回true,否則返回false
*
* @param conn
* @param vo
* @param wfo 包含有操作型別,操作結果
* @return
* @throws GFPortalException
*/
protected abstract boolean doCheckCanDoOrNot(Connection conn, Object vo, WorkFlowDataObj wfo) throws GFPortalException;
//模板方法
public void startup(Connection conn, Object vo, WorkFlowDataObj wfo) throws GFPortalException;
{
doInitProcessid();
doCheckCanDoOrNot(conn,vo,wfo);
}
//do other
}
子類:
package test.pattern;
import org.apache.log4j.Logger;
import java.math.BigDecimal;
import java.sql.Connection;
import java.util.Map;
/**
* Description : xx管理流程
* Author : husthxd
* Date: 2005-1-5
* Time: 19:54:29
* Version 1.0
*/
public class DrtPayReqProcessMgr extends abstractWorkFlowProcessMgr {
/**
* 日誌記錄物件
*/
static Logger logger = Logger.getLogger(DrtPayReqProcessMgr.class.getName());
/**
* 工廠方法
*
* @return
*/
public static abstractWorkFlowProcessMgr factory() {
//呼叫工作流API
return new DrtPayReqProcessMgr();
}
/**
* 初始化
*/
protected void doInitPocessid() {
super.processid = WorkFlowDataObj.WF_PROCESS_DRTPAY_REQ;
logger.info("設定流程id成功!");
}
/**
* 判斷操作是否可以繼續,可以繼續返回true,否則返回false
*
* @param conn
* @param vo
* @param wfo 包含有操作型別,操作結果
* @return
* @throws GFPortalException
*/
public boolean doCheckCanDoOrNot(Connection conn, Object vo, WorkFlowDataObj wfo) throws GFPortalException {
logger.info("檢查是否可以執行操作!");
DrtPayReqVO reqvo = (DrtPayReqVO) vo;
//提交操作
if (wfo.getOperation().equalsIgnoreCase(WorkFlowDataObj.OPERATION_SUBMIT)) {
//判斷是否已提交
boolean isSubmit = BusinessCheckSubmitAndAudit.factory().isDrtPayReqSubmit(conn, (DrtPayReqVO) vo);
if (isSubmit) {
//已提交
wfo.setError(CommonUtility.appendErrorFlag("Error!"));
return false;
}
return true;
}
//other method
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/6906/viewspace-21822/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 設計模式-Template Method Pattern設計模式
- C#設計模式-模板方法模式(Template Method)C#設計模式
- C#設計模式系列:模板方法模式(Template Method)C#設計模式
- JAVA設計模式之 模板方法模式【Template Method Pattern】Java設計模式
- 人人都會設計模式—模版方法模式–Template-Method設計模式
- 設計模式的征途—17.模板方法(Template Method)模式設計模式
- 設計模式--模板方法模式Template method(類行為型)設計模式
- Head First 設計模式 —— 09. 模版方法 (Template Method) 模式設計模式
- 【設計模式基礎】行為模式 - 6 - 模板方法(Template Method)設計模式
- 設計模式之---模板方法template method的使用設計模式
- 設計模式應用之Observer模式(2)設計模式Server
- 設計模式應用之Observer模式(1)設計模式Server
- Java設計模式之模板模式(Template )Java設計模式
- JUnit原始碼分析 (三)——Template Method模式原始碼模式
- 設計模式--工廠方法模式(Factory Method Pattern)設計模式
- 設計模式之工廠方法模式(FACTORY METHOD)設計模式
- 設計模式、用Delphi描述-->Factory Method模式 (轉)設計模式
- Henry手記—使用Template Method設計模式的.NET事件處理機制(一) (轉)設計模式事件
- Henry手記—使用Template Method設計模式的.NET事件處理機制(二) (轉)設計模式事件
- 設計模式(Design Patterns)工廠方法模式(Factory Method)設計模式
- C#設計模式系列:工廠方法模式(Factory Method)C#設計模式
- JAVA設計模式之 工廠方法模式【Factory Method Pattern】Java設計模式
- 設計模式的征途—3.工廠方法(Factory Method)模式設計模式
- 使用C# (.NET Core) 實現模板方法模式 (Template Method Pattern)C#模式
- 請教有關template設計模式的問題設計模式
- 模板方法模式(Template)模式
- 關於Template模式模式
- 設計模式 | 策略模式及典型應用設計模式
- 我所理解的設計模式(C++實現)——工廠方法模式(Factory Method Pattern)設計模式C++
- 設計模式 | 外觀模式及典型應用設計模式
- 設計模式 | 享元模式及典型應用設計模式
- 設計模式 | 模板方法模式及典型應用設計模式
- 設計模式 | 組合模式及典型應用設計模式
- 設計模式 | 觀察者模式及典型應用設計模式
- 設計模式 | 中介者模式及典型應用設計模式
- 談一談我對‘模板方法’設計模式的理解(Template)設計模式
- 《從零開始學Swift》學習筆記(Day 63)——Cocoa Touch設計模式及應用之單例模式Swift筆記設計模式單例
- Factory Method 工廠方法模式(建立型模式)模式