請教benq大哥strategy模式在實際中的一個應用

daemonx發表於2004-05-31
mvc結構中,向資料庫中匯入檔案時,需要針對table來匯入,先考慮簡單的情況,即一個檔案只對應一個表。
現有四個檔案,分別要匯入四個表格中(他們的欄位不同),這時就表示要有四種不同的方法來分別處理四個不同的表格。
按照strategy模式的邏輯,可以將四種不同的處理表格的方法分別包裝到四個類中,暫且分別叫他們StuModel, TchModel, EntModel, FamiModel,然後為這四個類抽象出一個介面,名為Model,然後在ImportExcel中使用類似如下的程式碼使用Model類:
public class ImportExcel{
private Model=null;
ImportExcel(Model aModel){
Model=aModel;
}
public doImport(){
……
}
……
}
我有幾個問題,
第一個問題是,我不確定我對strategy模式的理解準不準確,使用的是不是正確。
第二個問題是,在這種情況中使用strategy模式有沒有問題。
第三個問題是,strategy模式是用來方便的更換演算法的,通常來說是根據使用者的不同需要,跟使用者進行互動,由使用者來選擇一種演算法,比如說gui上使用一個下拉選單,上邊列出了若干演算法,這個時候確定按鈕中應該如何處理使用者在下拉選單中的選擇,建立不同型別的Model?(下拉選單中通常傳回的是String吧?不知有沒有方法直接傳回相應的Model類,JComboBox在列表中顯示時是呼叫Objct.toString()來顯示add()到其中的Object嗎?)我猜是使用Class.forName(),不知對不對:)
第四個問題是,如果在沒有使用者互動的情況下使用strategy模式有什麼優勢。

問題多了點,而且很初級,請不吝賜教,謝謝了先。

相關文章