新Java運動:測試驅動開發3---使用者註冊2
測試驅動開發(TDD)其實不是一個新概念,但這種方法論的實質經常被誤解。以我為例,我覺得測試驅動開發就是寫單元測試,對程式碼進行充分測試。其實這是一種對測試驅動開發的一種最常見的誤解,測試驅動開發不僅是強調測試,同時更強調驅動開發。編寫測試案例的目的不僅是進行測試,而且是一種設計,是對功能及介面的設計,而且是以功能或介面使用者的角度來進行設計,而其他方法學中的設計,則是在開發人員角度上的設計,因此測試驅動開發更有利於產生好的設計。
但是僅僅通過測試進行設計,運行測試來保證代碼質量,還不足以產生高質量的軟體產品。測試驅動開發同時也強調重構,就是對程式碼不合理的地方進行重構,而且這個重構在每次編寫測試、開發、驗證進程中都需要進行,由於有測試用例進行保證,我們可以放心大膽的進行重構,而不用擔心會導致意想不到的後果出現。
回到我們的專案中,在MainServlet中,我們實現了全部的業務邏輯,但是我們很快就會意識到,如果所有應用邏輯都寫到這個類別中,那個這個類別將變成一個巨無霸,最終會變得不可維護,因此我們需要將用戶註冊業務邏輯實作放到用戶模組中去。大家可以看到,我們已經開始重構我們的系統了。
首先,我們建立user包,在該包下面建立UserMngr類,因為我們預估,用戶模組除了維護用戶基本信息外,還需要維護用戶群組、用戶級別、用戶積分等信息,如果讓調用者完全了解這些細節資訊是沒有必要的,因此我們在這裡使用了Facade模式,所有對使用者的操作都透過UserMngr來進行。程式碼如下所示:
public class UserMngr { public static long registerUser(Map<String, Object> userInfo) { return 101; } }
我們看到,在這個類別裡,我們只回傳一個值,什麼也沒做,為的是快速驗證我們的重構架構是可以工作的,具體功能可以在以後添加。另外,要注意的是參數項,這裡用的是Map對象,也就是以類似PHP的數組來傳遞參數。在Java中更常見的作為是為此目的設計一個值物件類,但是這經常造成定義許多值物件類,或者由於共用的需要,一個值物件非常龐大,這裡採用Map來傳遞參數省去了這樣的麻煩。
下面在MainServlet中加入對使用者模組呼叫的程式碼:
private void registerUser(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { String userName = null; if (request.getParameter("userName") != null) { userName = request.getParameter("userName"); } Map<String, Object> userInfo = new HashMap<String, Object>(); userInfo.put("userName", userName); long userId = UserMngr.registerUser(userInfo); Map<String, Object> model = new HashMap<String, Object>(); model.put("userId", "" + userId); request.setAttribute("model", model); /*this.getServletContext().getRequestDispatcher("/caporder/apply_capital.jsp") .forward(request, response);*/ }
下面運行測試案例,應該可以通過,這證明我這次對架構的重構是成功的。
以上就是新Java運動:測試驅動開發3---用戶註冊2的內容,更多相關內容請關注PHP中文網(www.php.cn)!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

DeepSeek 官網現推出多重優惠活動,為用戶提供お得購物體驗。新用戶註冊即可獲得 10 美元優惠券,全場享受 15% 限時折扣。推薦好友還可賺取獎勵,購物消費可累積積分兌換禮品。活動截止時間不同,詳情請訪問 DeepSeek 官網查詢。

Java 8引入了Stream API,提供了一種強大且表達力豐富的處理數據集合的方式。然而,使用Stream時,一個常見問題是:如何從forEach操作中中斷或返回? 傳統循環允許提前中斷或返回,但Stream的forEach方法並不直接支持這種方式。本文將解釋原因,並探討在Stream處理系統中實現提前終止的替代方法。 延伸閱讀: Java Stream API改進 理解Stream forEach forEach方法是一個終端操作,它對Stream中的每個元素執行一個操作。它的設計意圖是處

Gate.io 芝麻開門是全球領先的區塊鏈數字資產交易平台,包含法幣交易、幣幣交易、槓桿交易、永續合約、ETF 槓桿代幣、理財寶、Startup 首發等版塊,為用戶提供安全穩定,公開透明。

Java是熱門程式語言,適合初學者和經驗豐富的開發者學習。本教學從基礎概念出發,逐步深入解說進階主題。安裝Java開發工具包後,可透過建立簡單的「Hello,World!」程式來實踐程式設計。理解程式碼後,使用命令提示字元編譯並執行程序,控制台上將輸出「Hello,World!」。學習Java開啟了程式設計之旅,隨著掌握程度加深,可創建更複雜的應用程式。

膠囊是一種三維幾何圖形,由一個圓柱體和兩端各一個半球體組成。膠囊的體積可以通過將圓柱體的體積和兩端半球體的體積相加來計算。本教程將討論如何使用不同的方法在Java中計算給定膠囊的體積。 膠囊體積公式 膠囊體積的公式如下: 膠囊體積 = 圓柱體體積 兩個半球體體積 其中, r: 半球體的半徑。 h: 圓柱體的高度(不包括半球體)。 例子 1 輸入 半徑 = 5 單位 高度 = 10 單位 輸出 體積 = 1570.8 立方單位 解釋 使用公式計算體積: 體積 = π × r2 × h (4

Spring Boot簡化了可靠,可擴展和生產就緒的Java應用的創建,從而徹底改變了Java開發。 它的“慣例慣例”方法(春季生態系統固有的慣例),最小化手動設置

JavaMadeSimple:ABeginner'sGuidetoProgrammingPower簡介Java是一種強大的程式語言,廣泛應用於從行動應用程式到企業級系統的各種領域。對於初學者來說,Java的文法簡潔易懂,是學習程式設計的理想選擇。基本語法Java使用基於類別的物件導向程式設計範式。類別是將相關資料和行為組織在一起的範本。以下是一個簡單的Java類別範例:publicclassPerson{privateStringname;privateintage;

Gate.io交易所是全球領先的加密貨幣交易平台之一。本指南提供分步教程,幫助用戶註冊和使用Gate.io進行交易。註冊過程包括選擇註冊方式(電話、郵箱或社交賬號)、填寫信息、設置登錄密碼和完成身份認證。交易教程包括訪問交易頁面、選擇交易對、輸入交易信息、下單和查看訂單狀態。通過本文的指導,用戶可以輕鬆開始在Gate.io上進行加密貨幣交易。
