關於一個建立型模式的討論:

liubing76發表於2003-05-16


關於一個建立型模式的討論:


我在構造一個web framework時,定義action其實就是struts的action,
當然他也是command模式。我在建立它時使用以下模式,
目前假設有兩個action
public class loginAction extends action{

}
public class logoutAction extends action{

}

當初我使用了簡單工廠方法,根據請求的urlpath動態建立,

public class actionFactory{
public static action(string urlpath){
if (urlpath.equal("")){
return loginAction();
}else if (urlpath.equal("")){
return logoutAction();
}
}
}
這個工廠方法,每次都建立新的action,效能不好,我們希望香struts一樣使用cache,
於是我們改為,可以使用每次建立新的action,也可以使用cache建立,並且可以配置,
甚至客戶可以二次開發,實現自己的工廠方法,只需實現一個介面,如下:

//定義建立介面
public interface actionFactory{
public action(string urlpath);
}

//每次都建立新的action
public class newActionFactory implements actionFactory{
public action(string urlpath){
if (urlpath.equal("")){
return loginAction();
}else if (urlpath.equal("")){
return logoutAction();
}
}
}
//使用cache建立模式。
public class cacheActionFactory implements actionFactory{
Hashmap cache=new HashMap();

public action(string urlpath){
if (urlpath.equal("..")){
if(cache.get("..')){
return (Action)cache.get("..')
} else{
Action obj=new loginAction();
cache.put("",obj );
retunrn obj;
}

}else if (urlpath.equal("")){
//省略
}
}
}


這樣我們提供一個配置檔案,客戶可以動態決定使用那種工廠方式,來建立action,
如下:
actionFactory=cacheActionFactory;

這種方式我使用了,現在我不知道,這到底屬於那種模式,
是工廠方法,還是抽象工廠,它們都不像??

我認為是 工廠方法,但是有的同時認為,不是?

可以參考設計模式的73頁,引數化工廠方法??

大家可以討論?

相關文章