日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

App架构设计经验谈:展示层的设计

發布時間:2025/4/5 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 App架构设计经验谈:展示层的设计 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

App架構設計經驗談:展示層的設計

三層架構中,數據層和業務層都已經做過了簡單的分享,最后,就剩下展示層了。本篇就給各位分享下我在展示層設計方面的一些經驗心得。

展示層是三層架構中最復雜的一層了,需要考慮的包括但不限于界面布局、屏幕適配、文字大小、顏色、圖片資源、提示信息、動畫等等。展示層也是變化最頻繁的一個層面,每天改得最多的就是界面了。因此,展示層也是最容易變得混亂不堪的一個層面。一個良好的展示層,應該有較好的可讀性、健壯性、維護性、擴展性。

三原則

我在Android項目重構之路:界面篇中提到過三個原則,要設計好展示層,至少需要遵循好這三條基本的原則:

  • 保持規范性:定義好開發規范,包括書寫規范、命名規范、注釋規范等,并按照規范嚴格執行;

  • 保持單一性:布局就只做布局,內容就只做內容,各自分離好,每個方法、每個類,也只做一件事情;

  • 保持簡潔性:保持代碼和結構的簡潔,每個方法,每個類,每個包,每個文件,都不要塞太多代碼或資源,感覺多了就應該拆分。

  • 關于這三個原則詳細的解說,界面篇已經講過的,我這里就不再重復。在此,我只做些補充。

    關于規范,Android方面,我已經分享過一套Android技術積累:開發規范,主要分為書寫規范、命名規范、注釋規范三部分。iOS方面,蘋果已經有一套Coding Guidelines,主要屬于命名方面的規范。當我們制定自己的開發規范時,首先就要遵守蘋果的這份規范,在此基礎上再加上自己的規范。

    最重要的不是開發規范的制定,而是開發規范的執行。如果沒有按照開發規范去執行,那開發規范就等于形同虛設,那代碼混亂的問題依然得不到解決。

    另外,Android系統本身已經對資源進行了很好的分離,字符串、顏色值、尺寸大小、圖片、動畫等等都用不同的xml文件定義。而iOS系統在這方面就遜色很多,只能自己實現,其中一種實現方案就是通過plist文件的方式實現和Android一樣的機制。

    工程結構

    工程結構其實就是模塊的劃分,無非分為兩類:按業務劃分或按組件劃分。

    比如一個電商App,可能會有首頁、附近、分類、我的四大模塊,工程結構也根據這四大模塊進行劃分,Android可能就分為了四個模塊包:

    • com.domain.home 首頁

    • com.domain.nearby 附近

    • com.domain.category 分類

    • com.domain.user 我的

    同樣的,iOS則分為四個分組:home、nearby、category、user。

    之后,每個模塊下相應的頁面就放入相應的模塊。那么,問題來了,商品詳情頁應該屬于哪個模塊呢?首頁會跳轉到商品詳情頁,附近也會跳轉到商品詳情頁,分類也會跳轉到商品詳情頁,用戶查看訂單時也能跳轉到商品詳情頁。有些頁面,并不能很明顯的區分出屬于哪個模塊的。我接手過的,按業務劃分的二手項目中(即不是由我搭建的項目),我要找一個頁面時,我認為應該屬于A模塊的,但在A模塊卻找不到,問了同事才知道在B模塊。類似的情況出現過很多次,而且不止出現在我身上,對業務不熟悉的開發人員都會出現這個問題。而且,對業務不熟悉的開發人員開發新的頁面或功能時,如果對業務理解不深,劃分出錯,那也將成為問題,其他人員要找該頁面時更難找到了。

    因此,我更喜歡按組件劃分的工程結構,因為組件每個人都懂,不管對業務熟不熟悉,查找起來都明顯方便很多。Android按組件劃分大致如下:

    • com.domain.activities 存放所有的Activity

    • com.domain.fragments 存放所有的Fragment

    • com.domain.adapters 存放所有的Adapter

    • com.domain.services 存放所有的Service

    • com.domain.views 存放所有的自定義View

    • com.domain.utils 存放所有的工具類

    iOS的分組則大致如下:

    • controllers 存放所有ViewController

    • cells 存放所有Cell,包括TableViewCell和CollectionViewCell

    • views 存放所有自定義控件或對系統控件的擴展

    • utils 存放所有的工具類

    基類的定義

    Android的Activity、Fragment、Adapter,iOS的ViewController,分別定義一個基類,將大部分通用的變量和方法定義和封裝好,將減少很多工作量,而且有了統一的設置,也會減少代碼的混亂。比如我在Android項目重構之路:實現篇中提到的KBaseActivity和KBaseAdapter的實現就是例子,當然還可以抽離出更多變量和方法。

    每個Activity的onCreate()方法,一般分為三步:

  • 變量的初始化;

  • View的初始化;

  • 加載數據。

  • 因此,其實可以將onCreate()方法拆分成三個方法:

  • initVariables()

  • initViews()

  • loadData()

  • 在基類中將這三個方法定義為抽象方法,由子類去實現,這樣,子類就不需要實現onCreate()方法了,只要實現更細化的上述三個方法即可。

    iOS的ViewController也是同樣的方式,這里就不重復了。


    轉載于:https://my.oschina.net/u/2394328/blog/634394

    總結

    以上是生活随笔為你收集整理的App架构设计经验谈:展示层的设计的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。