使用 Translator 模式構建更好的網站(5)_Windows教程
Translator 使用 processForm() 清除以前顯示的錯誤,并從提交的表單中分析此信息。當 servlet 接收到一個提交的表單時,它就會將對該表單的處理委托給 Translator。在本委托期間,Translator 分析提交表單的值,并將這些值分別存儲在 String 變量中。這些存儲變量隨后通過 syncModelToGui()(由 servlet 調用)轉換為業務對象的值。
syncGuiToModel() 和 syncModelToGui() 是兩個類似的方法,顧名思義,其中一個方法按某個方向對值執行同步,而另一個方法按相反的方向執行同步。syncGuiToModel() 從業務對象的屬性中提取這些值,并使用 Object Translator 預先格式化每個屬性值。Object Translator 將值預先格式化為要在屏幕上顯示的值。隨后,它將 Translator 的對應 String 變量設置為這個值。syncModelToGui() 執行的操作相同,但方向相反。下面是從典型的 syncGuiToModel() 中摘出的一小段代碼:
DoubleTranslator dtDouble = new DoubleTranslator(); String sTemp = dtDouble.translate(loan.getInterestRate()); setInterestRate(sTemp); |
為了使轉換代碼具有最大的可重用性,并為整個站點提供一種共同的轉換,syncGuiToModel() 和 syncModelToGui() 使用的都是 Object Translator 類。Object Translators 與 Translator 對象聯系得如此緊密,以致于幾乎可將它們看作是 Translator 對象的規則。Object Translator 類是一個簡單的類,它的唯一用途就是將一種數據類型轉換為格式化字符串,以及將格式化字符串轉換為它的數據類型。下面是一個很簡單的 Object Translator 類的代碼:
public class DoubleTranslator extends ObjectTranslator public double translate(String stringToBeTranslated) throws Exception try { return dRV; |
當這個樣例 Object Translator 將 double 轉換為格式化的 String 時,它只需調用 Double.toString()。這個方法可實現更強大的功能,例如,可以添加幾行代碼,使得當格式化類似 1000.25 這樣的大 double 值時,可預格式化這個值,以便顯示為 1,000.25。
對于 DoubleTranslator.translate(String),須注意的重要一點是,它會發出一個可讀性很好的異常,而不是標準的 Java.lang.NumberFormatException 異常。JSP 文件將此異常的消息直接顯示給網站訪問者,因此,讓網站的普通訪問者很容易地理解該方法發出的異常是非常重要的。
4. 小結
使用 Translator 模式框架的優點很多,不僅可以降低網站的成本,而且可以提高用戶的滿意度。由于不同組件都只執行專門的任務,因而網站的構建成本降低了。這些專門任務分配給生產小組,如 HTML 小組或 Java 程序員小組。因為 Translator 模式的 ObjectTranslators 在整個網站重用,所有全部格式化和分析都是以相同的方式進行的。因為每項任務都以相同的方式完成,所以網站訪問者就能夠以一致的方式查看整個網站的信息。這進一步提高了用戶的滿意度。
- 相關鏈接:
- 教程說明:
Windows教程-使用 Translator 模式構建更好的網站(5)
。