簡體   English   中英

使用MVC設計模式,正則表達式在iOS應用中會去哪里?

[英]Where does regex go in an iOS app using the MVC design pattern?

我正在快速編寫一個iOS應用程序,就像在每個屏幕中要求用戶輸入的每個應用程序一樣。 在設計應用程序時,我希望遵循良好的設計模式,現在我主要關注Model-View-Controller設計模式。 我將重點介紹“用戶注冊和登錄”屏幕,以說明我的情況。 我有一個用戶注冊屏幕和一個登錄頁面,它們共享相似的輸入字段,例如:電子郵件和密碼

到目前為止,為了遵循MVC模式,我有以下課程:

模型類: User.swift

查看類: UserView.swift

控制器類: UserRegistrationViewController.swift,SignInViewController.swift

我現在在設計方面遇到的問題是,在每個視圖控制器類中,我主要使用正則表達式來驗證每個輸入字段。 您可能會猜到,這意味着我在兩個視圖控制器中都得到了很多重復的代碼。 例如,我正在兩個視圖控制器中以完全相同的方式驗證電子郵件和密碼。 因此,我應該如何解決這個問題並仍然遵循MVC? 我傾向於擁有一個Validator類該類具有幾個可通過每個視圖控制器調用和重用的Validator函數,也許還有一個只包含regex的Regex類 還是應該是某種類型的屬性文件

退后一步,想一想。 您的RegEx函數有什么作用? 驗證和解析數據。 那是一個模型(數據存儲)功能嗎? 並不是的。 視圖? 一點也不。 控制? 這似乎是最合適的。 控制器在視圖對象和數據模型之間進行中介,還提供應用程序控制邏輯。

現在,關於重復代碼問題。 您可以使用多種選擇來處理此問題。

一種是為所有提供RegEx支持的視圖控制器創建一個公共子類。

另一種方法是為您的視圖控制器類創建擴展,並將驗證代碼放在此處。

第三種方法是創建驗證器類,並使視圖控制器具有驗證器屬性(“具有a”關系。視圖控制器具有管理該驗證器的驗證器。)甚至可以使用混合。 假設您有UIViewController的子類,該子類具有Validator類的“管​​道”。

我傾向於第三種方法。 將驗證功能保留在視圖控制器本身之外會使它模塊化,並且更有可能被重用。 在設計Validator類時(假設您采用的是這種方法),請考慮Validator類可能也有用的其他用例,並嘗試進行設計以適應各種用例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM