基礎框架搭建

本次框架的內容是結合項目架構、iOS項目結構和android的項目結構模式整理的,屬于個人經驗總結,如果有不合理地方,請多多指教。
框架:
項目框架,使用MVC和MVVM開發模式,更偏向代碼結構。

思想:

分層
? UI層
? 網絡層
? 數據層
? 業務邏輯層
? 工具層

UI層

構建BaseUI控件庫,繼承BaseUI控件擴展開發。
BaseUI是項目UI主結構。
呈現和交互數據使用,并且用戶交互。
控件封裝化,組件化。

網絡層
Servers:
https和http請求,格式json或者XML
請求方式:post和get。僅限制兩種。
參數:公共請求參數和私有請求參數,公共響應參數和私有響應參數。
公共參數的響應與請求,集成封裝。Header和body封裝集成。
將網絡請求接口返回對象。
請求案例:
網絡請求接口+返回對象類型——>封裝body和head——>發起請求——>json轉對象(成功和失敗)——>返回對象實例。
響應碼code和返回日志:封裝code對應表。將返回的數據,記錄日志。
加密和簽名:
使用MD5加密和RSA加密。
RSA
客戶端:
使用自己的私鑰加密,使用服務端的公鑰解密。用自己的私鑰加簽。發送服務端。
服務端:
使用客戶端的公鑰解密和解簽驗證身份。服務端使用自己的私鑰加密,數據傳輸。
MD5:
使用簽名規則,生成MD5密文,服務端和客戶端匹配MD5密文。
WEB:
Web服務,采用的是和H5頁面交互和加載邏輯,講動態頁面,使用web動態加載和js代碼引入方式,調用原聲代碼。加密采用MD5密文加密。

數據層

規則:文件格式+路徑+加密+邏輯處理(增刪改查)。

位置:磁盤和內存,Model和Loaction(本地存儲)
內存:Model對數據整合,將數據封裝成可使用對象。
將網絡層的數據以映射的方式,給model賦值。Key和屬性名映射表(如果一致不用映射,如果不一致請映射)。
Location(磁盤)
格式:FMDB、Plist、txt等等文件,目前統一FMDB和Plist,也可以用cache、NSUserDefault、歸檔等等方式,可以保存到沙盒或者library中。
加密
MD5(敏感信息,匹配使用,例如密碼)、RSA非對稱加密、采用base64編碼方式(注:base64并非加密,只是一種編碼格式)。
數據同步(Dao層):
操作邏輯:增、刪、改、查。
路徑邏輯:UI調用本地,本地檢測有無,如果有,則檢測內容(是否更新),返回UI,如果沒有,網絡獲取,存入本地,返回UI。

業務邏輯層
在ViewModel或者Controller中寫入邏輯代碼,也就是邏輯控制層。根據模塊或者頁面來區分不同的業務邏輯。找到業務邏輯中的難點、相同點、不同點。進行劃分為:核心技術、公共模塊,不同的模塊、以及模塊之間的通信,提到模塊間的通信。

工具層
? 使用Pod工具,管理第三方庫,
? 項目中將工具形式開發,降低項目模塊之間的耦合度。
模塊間通信
代碼級引用

模塊間通信可以使用代理、協議、block、KVO、KVO和URL的方式來處理,個人建議采用代理、協議和block方式
兩個互相不干系的組件模塊之間的通信使用協議(接口)代理block的方式,必要時使用通知監聽,(比如:類似SSM方式,定義一個網絡請求協議(RequestProtocol),在網絡請求工具類(RequestTools,有可能有多個,但是都有同樣的網絡請求參數和方式,小項目一般一個就能滿足)中,實現協議,在不同的網絡請求業務封裝(Request)類中初始化網絡請求工具類,調用網絡請求。 在業務層調用Request類,發起網絡請求)。
URL通信:
使用路由的方式,配置url,進行URLRoute。
設計模式
23三種設計模式,在項目中,一般都是綜合使用的,多種模式并存,在這里不一一介紹。

以上就是框架設計思路,下面我們來具體在項目中體現。

實踐:

需要建立的分組項目結構:
BaseUI(UI控件基類)
Config(項目配置文件)
Extension(自定義擴展類)
Library(非pod第三方庫)
Modules(模塊)
NetRequest(請求類)
Resource(資源配置庫)
Tools(工具類)

Pod第三方框架引入。

規則:
遵循統一規則,保證項目統一性,規范性。
BaseUI
BaseUI即項目展示層UI邏輯處理。
項目頁面之間的邏輯:
繼承UITabBarViewController,創建可以擴展的PTabBarViewController,集成公共操作邏輯,和自定義邏輯。
同理:UINavgitationControlle也加以擴展。Button添加index索引和手勢事件邏輯。PLabel繼承第三方富文本Label開發,擴展項目中的PLabel,UIImageView和Image處理,網絡圖片和圖片大小尺寸處理等等控件的封裝。根據項目需要,定義符合項目的控件。
自定義組件:
在項目中,使用的到的UI框架,比如:側滑切換試圖或者Excel模式等等容器類UI交互和UI展示組建,構建其生命周期和加載模式,數據綁定可以采用代理方式。采用代碼引入的方式,進行控件使用。

Config

項目配置庫,主要有:URL配置,Color配置,Strings配置,Style配置等等配置性內容。
URl配置:
做過服務端開發的都知道,在編寫接口的時候,如果遇到公共參數,在封map的時候,都會有相同的key存在,這時一般會將這些參數key編寫成一個類里面的public static的屬性。同樣,在iOS中,將那些公共參數,定義到一個宏里面,在使用的時候調用即可,避免多次使用帶來的麻煩。
將服務端的ip、端口和地址配置到一個宏定義。
Color配置
NetRequest(請求類)
規則:
采取OKHttp方式,利用AFN和MJExtension兩個框架,封裝成NetRequest類。接口傳入業務參數,返回model對象,并打印json格式日志。
NetRequest類:
包括兩個網絡請求方式,get和post。公共請求、響應參數和錯誤回調,成功回調,超時回調,網絡狀態。網絡請求接口,需要傳入回調代碼塊內容、具體業務參數和返回對象類型。

Extension

擴展類,對項目部分框架或者現有類新型擴展,原因是:框架保持不變,在原來基礎上進行擴展,保證項目框架安全。

Library

靜態庫文件存儲。將靜態依賴庫存放,不實用pod的方式。

Modules

模塊,可以采用MVVM、MVC、MVP等方式。劃分模塊,請依據項目需求和功能來劃分。

Resource

資源文件庫,將部分資源文件存放其中,在打ipa包時,資源文件是暴漏出去的。所以要做資源文件和代碼安全保護,后邊我會介紹ipa保護和沙盒保護。

Tools

工具類,將我們封裝的組件存放其中,比如:本地化管理,安全管理,UI組件,公共模塊類等等。

ipa包安全管理:
https://download.csdn.net/download/u013896628/10205782

RSA加密:
https://download.csdn.net/download/u013896628/10205777

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 女人的臉,六月的天,說變就變。尤其是中年的女人,在家里表現得更加突出。因為在家里是相對隱蔽的空間,或者家里有可...
    天涼好個秋吖閱讀 324評論 0 2
  • 有個男生,上個月告訴我,他喜歡上了一個不錯的女生,找人打聽到了她的電話,和她聊了幾次,終于鼓起勇氣告白。可是女孩巧...
    咚咚鏘閱讀 768評論 0 7
  • kesain閱讀 205評論 0 2
  • 也許、也許 …… 走上人生的旅途吧。前途很遠,也很暗,然而不要怕,不怕的人前面才有路。 ...
    謎語婆婆閱讀 182評論 0 0