我有一個典型的商業Web應用程序,其中的域包含像賬戶和用戶這樣的實體。我的後端是Java,所以它們由POJO代表。在早期迭代期間,這些POJO的每個屬性都只是字符串。這是有道理的,因爲html輸入是一個字符串,並且數據在數據庫中的保存方式也類似於字符串。代表電子郵件,電話號碼和編號爲POJO而不是字符串
最近,我們一直致力於驗證這種輸入,我發現它有助於切換到這種屬性的對象表示法。例如,TelephoneNumber
類包括:
- (int)的國碼
- (串)數量的剩餘
- (靜態字符)的前綴國碼(在我們的情況下,這個字符是+)
- (靜態模式)正則表達式匹配,如果phonenumber是有道理的
- 方法來比較和驗證電話號碼。
此類具有優點和缺點:
- 不好:其他對象的創建和串/對象之間的轉換
- 良好:OOP和關於電話號碼在一類捆綁所有邏輯(高凝聚力),
- 好:無論何時需要一個電話號碼作爲方法或構造函數的參數,java的嚴格打字使得它非常清晰,我們不僅僅處理隨機字符串。
比較可能的混亂雙串:
public User(String name, String telephoneNumber)
VS乾淨的OOP方式:
public User(String name, TelephoneNumber telephoneNumber)
我認爲在這種情況下的優點outweight的disadvantges。我現在擔心的是以下兩個屬性:
-id的(如b3e99627-9754-4276-a527-0e9fb49d15bb) -e-mailadresses
這個 「對象」 是真的只是一個字符串。把它們變成物體看起來有點矯枉過正。特別是user.getMail.getMailString()
類方法真的打擾我,因爲我知道mailString是郵件的唯一屬性。但是,如果我不把它們變成一個對象,我會失去一些優點。
所以我的問題是:你如何處理這個概念在Web應用程序?需要考慮最佳實踐或其他問題嗎?
你想用字符串/對象*之間的轉換思考什麼樣的轉換? – Ascalonian 2015-02-06 15:33:55
*這個「對象」實際上只是一個單一的字符串。* - 您的示例包含了不存在於您的字符串中的結構和函數(或者只是隱式存在) - 您自己定義的內容有價值,所以值得去做。創建對象在面向對象的語言中並不過分。 – 2015-02-06 15:40:10
@Ascalonian Object o = new Object(「string」);並且在代碼中用於說user.getMail()的地方,它會變成user.getMail.getMailString() – user1884155 2015-02-06 17:30:41