1. 程式人生 > >Android-框架-學習 CleanArchitecture 心得體會

Android-框架-學習 CleanArchitecture 心得體會

最近 Android-CleanArchitecture 鬧得是沸沸揚揚,然而筆者也不甘寂寞,一直在研究這個東西,也fork過一些關於cleanArchitecture開源的專案進行了學習:

至於大家為什麼傾向於cleanArchitecture,那一定是有他的道理的。就好比,對比傳統開發的MVC開發方式,你會得到以下好處。

程式碼複用性更高
更易於測試
耦合度更小

下面這幅圖,是googlesample下面的了。

 

下面這幅圖,是uncle-bob畫的了。

 

細心的你已經發現了,這兩個圖其實是一個意思。從大的方向上看,都是三層結構。

DataLayer

最底層,完全不知道有DomainLayer,PresentationLayer的存在,聽到這裡,你還在懷疑這個架構的可測試性和耦合度低嗎?那麼DataLayer的主要職責是什麼?
1、從網路獲取資料,向網路提交資料,總之就是和網路打交道。
2、從本地DB,shareprefence等等,記憶體等,總之就是本地獲取資料,快取資料,總之就是和本地資料打交道的。
這也就是你為什麼看到很多Android-CleanArchitecture 的 package裡面有一個local ,和一個remote了,然而是否有必要分的這麼細,個人習慣啊~,不強求。反正這一層如果出現了 anroid.os*

,我就更你拼了,對不起,你已經偏離了Android-CleanArchitecture了。

DomainLayer

中間層,他完全不知道有一個PresentationLayer存在,他只知道,有DataLayer,他可以基於這些資料,建立很多玩法,比如去網路拿一堆名人回來,然後將這些資料快取到本地,在比如,他寫了一篇黑某明星的文章,將文字釋出到網上等等。因此他的主要職責是:
1、控制DataLayer對資料做增刪改查,沒錯,就這麼簡單,然後就沒有然後了。
2、真的沒有了,不騙你,但是這一層如果出現了 anroid.os*,我就更你拼了,對不起,你已經偏離了Android-CleanArchitecture了。

PresentationLayer

最上層,他知道DomainLayer,有人要問了,那麼他知道DataLayer,回答,他知道你妹~ 他累不累啊,要知道這麼多?
因此,它只知道DomainLayer,那麼他的職責有哪些?
1、通知DomainLayer有活幹了,根據DomainLayer反饋變化介面
2、通知DomainLayer有活幹了,根據DomainLayer反饋變化介面
3、通知DomainLayer有活幹了,根據DomainLayer反饋變化介面
這年頭,重要的時間一定要說三遍,而且,就是這麼任性~~

分析了每層之後,我們發現,依賴的關係是 PresentationLayer

--> DomainLayer --> DataLayer 的。
DomainLayer  --> DataLayer不知道有android平臺的存在。
因此,只要我們圍繞這個原則去做架構,那麼就稱的上是Android-CleanArchitecture



作者:brzhang
連結:http://www.jianshu.com/p/cba6663435c7
來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。


相關推薦

Android-框架-學習 CleanArchitecture 心得體會

最近 Android-CleanArchitecture 鬧得是沸沸揚揚,然而筆者也不甘寂寞,一直在研究這個東西,也fork過一些關於cleanArchitecture開源的專案進行了學習: 至於大家為什麼傾向於cleanArchitecture,那一定是有

尚學堂java培訓怎麽樣?談談我在尚學堂學習心得體會

培訓機構 尚學堂 參加尚學堂java培訓班有一段時間了,今天有點時間,來分享下這段時間在尚學堂學java的心得體會。 學java編程很枯燥也很乏味,每天就是對著電腦敲寫著代碼,一行行代碼在電腦鍵盤的敲擊下就如同壘城堡一般,必須很專註很認真仔細,因為稍不留神一個標點符號,或者大小寫一點點小錯誤

java學習心得體會

面臨畢業與就業的壓力,不久將來就要從一個學生到一個社會人的轉變:技術在不斷的提高,思路在不斷的開闊,思想在不斷的昇華,更重要的是自己的理想和抱負更加的堅定。對於一個投身於IT的新人,經驗談不上,一些學習的心得倒是可以拿出來探討一下,我們該如何面臨這個似曾相識的社會,突然一天

學習Java心得體會

                學習了一學期的Java課程,覺得是該總結自己的心得體會了。開始學習任何一門課(包括java)

韋東山老師對於嵌入式學習心得體會

被問過太多次,特寫這篇文章來回答一下。    在學習嵌入式Linux之前,肯定要有C語言基礎。彙編基礎有沒有無所謂(就那麼幾條彙編指令,用到了一看就會)。 C語言要學到什麼程度呢?越熟當然越好,不熟的話也要具備基本技能。比如寫一個數組排序、輸入數字求和什麼的。 學C語言唯一的方法是多寫程式多練習,編譯出錯

學習web.py Flask框架心得體會

在web開發中,大多數python用作神經學習,因為有很多可以呼叫c語言或者底層庫更容易進行機器學習與神經網路進行搭建計算圖,然後通過Session進行計算節點資料。 我想著如果進行試圖展示或者人機互動我們可以通過頁面,進行互動,影象是最直觀的表達。Flask

SSH三大框架學習心得體會

這篇文章是基本的概念講解和心得體會,之後會有詳細的demo進行解說。 在過去的一段時間內,我一直對SSH(spring、Struts2、hibernate)的框架不是很瞭解,藉著這次完成電影購票系統的大作業好好學習了一下。學習過程中,我閱讀了一些相關書籍,其中

學習JAVA框架心得體會

以前在學習三大框架的時候,覺得那是多麼神聖的一件事情,覺得擁有他們可以稱霸世界的感覺,但在後期工作中,和個人對學習重點的把握,對學習框架以及使用框架有一些新的認識,給大家分享一下: 1、新手如何看待搭建框架 依稀記得初學框架的時候,都是寫步驟的,第一步匯入jar包;第二步

Android:一個妹zhi的學習之路_心得體會

       今天停下來,思考了一下Android學習路線,發現自己有點亂了。看了一篇部落格,給了我很大的感觸,思索下我開通了部落格,想把自己的一些感悟和總結在部落格上分享。 -----------------------------------------------

我所理解的Vue——學習心得體會1(Vue對象)

vue 模板 welcom 模型 style 學習 認識 理解 內容 初學Vue,總結如下: 1、首先要區分html的dom和js的dom 2、html的dom是View的範疇,js的dom是Model的範疇。 3、vue這庫就是創建了偉大的new Vue()對象,把htm

學習心得體會

全面 -s sel hid hidden 常見 心得 eset 整理 今天學習了第二部分“表單”。相較於昨天的課程,稍微加了難度,對於零基礎的我來說,還需要消化吸收。 form裏邊常見屬性如name、method、action,文本輸入呢則通過input包括txt、

學習軟件工程學習報告以及心得體會

針對性 不可 成了 每一個 後來 可能 描述 sof 公司 學習了一個學期的軟件工程,到現在基本上已經結課了。我談談這個學期我學到的和懂得的東西。 總體來說,我最大的收獲是我們的實際能力得到了提高,我們有個人項目,結對項目以及團隊項目。我們的互動做了

linux find命令用法 linux學習心得體會

txt linux ali 學習心得 訪問 lin atime str 輸出 find命令用來在指定目錄下查找文件的命令,和locate不同,find命令是實時精確查找,不做模糊匹配,但是可以使用通配符查找,相對更精確。任何位於參數之前的字符串都將被視為欲查找的目錄名。如果

Android Room框架學習筆記

build tails accep new ignore Owner -m dice ike 一、使用 1、build.gradle引入 compile "android.arch.persistence.room:runtime:1.0.0" annotationPro

計算機學習心得體會

什麽 很快 java 操作 基礎 浪費時間 工程 ++ 語言 (1)回顧你過去近3年的學習經歷 當初你報考的時候,是真正喜歡計算機這個專業嗎???當初報專業時考慮了好久,把所有的專業認真思考了一遍,因為知道只有自己有興趣大學學習才不會白白浪費時間。我確定自己是喜歡

課程學習心得體會

協作 項目 project er圖 範圍 product 學習 people 感覺 當看到課程表有軟件工程導論大的時候,就覺得好奇,這是一門什麽樣的課程。如今已學了一個學期的這門課了,雖然不能說完全掌握全部內容,但也知道了軟件工程導論的大概了,說來慚愧,覺得學

學習軟件工程這門課心得體會

老師 就是 高手 組織 規範 編碼 每一個 能夠 開發 未接觸軟件工程之前一直都很想學這門課程,因為覺得這門課很牛,是那些有工程師稱號的高手才擺弄的東西。學了一個學期的軟件工程課,終於知道了個軟件工程的大概。學的時候總覺得很抽象,理解起來好像不難,但總是摸不著頭腦一

《刻意學習》讀後感心得體會3000字左右

《刻意學習》讀後感心得體會3000字左右: 清晨,天微微亮。床邊的手機鬧鈴開始瘋狂的振動,持續的振動深入靈魂,像一位不速之客闖進我的夢裡,睡眼惺忪的我極不情願的半睜雙眼,順著鈴聲的方向,掙扎著關掉鬧鐘,然後繼續縮回溫暖而舒適的被窩…… 上面這個場景,幾乎就是我最近一年中每個早上的情景再現,儘管已經換過四處住所

Android Room 框架學習

       Room是一個物件關係對映(ORM)庫。Room抽象了SQLite的使用,可以在充分利用SQLite的同時訪問流暢的資料庫。        Room官方文件介紹 https://develope

學習微控制器的心得體會(轉載)

我當時是買了一塊實驗板,很簡單的功能,比論壇實驗板還要少功能,還有一個模擬器,也是比較簡單的,SST晶片的。然後開始從大家都知道的流水燈寫起,萬事開頭難,第一個程式基本上就抄人家的,翻查了一份快速入門的學習資料,寫下第一個程式。然後,在模擬機是單步的看執行結果,從每一步執