架構(gòu)


一先蒋、介紹架構(gòu)

? ? ? 有關(guān)android架構(gòu)方面的知識(shí)少之又少,而對(duì)與架構(gòu)的理解有關(guān)架構(gòu)的文章也都是智者見智仁者見仁宛渐。在我身邊聽到最多的話就是架構(gòu)=What竞漾?、架構(gòu)=框架窥翩、架構(gòu)=設(shè)計(jì)模式业岁、架構(gòu)=MVP/MVVM。那么架構(gòu)到底是什么那寇蚊?架構(gòu)又有何用處笔时?它在android中又能給你帶來意想不到的效果?? 希望有興趣的能和各位討論討論仗岸。

二允耿、理解架構(gòu)

全球有名的架構(gòu)目前分為四種

1、Clean架構(gòu):一種分層的架構(gòu)方式爹梁,將核心業(yè)務(wù)(對(duì)應(yīng)domain層)右犹、UI相關(guān)(對(duì)應(yīng)presenter層)以及數(shù)據(jù)加載(對(duì)應(yīng)data層)彼此獨(dú)立開來,不同的層之間由接口依次連接起來姚垃,但卻又彼此不了解彼此的具體實(shí)現(xiàn)念链。

Clean架構(gòu)

2、DCI架構(gòu):DCI是數(shù)據(jù)Data 場(chǎng)景Context 交互Interactions的簡(jiǎn)稱积糯,DCI是一種特別關(guān)注行為的模式(可以對(duì)應(yīng)GoF行為模式)掂墓。DCI架構(gòu)真正含義可以歸結(jié)如下:

1.數(shù)據(jù)data:是領(lǐng)域?qū)ο笾写眍I(lǐng)域類概念的那部分。

2.場(chǎng)景context:根據(jù)運(yùn)行時(shí)即時(shí)調(diào)用看成,將活的對(duì)象實(shí)例帶到符合用例需求的場(chǎng)景中

3.交互interactions, 描述需求用戶心目中角色的活動(dòng)算法君编。


DCI架構(gòu)

3、DDD領(lǐng)域驅(qū)動(dòng)設(shè)計(jì):2004年著名建模專家Eric Evans發(fā)表了他最具影響力的著名書籍:Domain-Driven Design –Tackling Complexity in the Heart of Software(中文譯名:領(lǐng)域驅(qū)動(dòng)設(shè)計(jì) 2006年3月清華出版社譯本川慌,或稱 Domain Driven-Design architecture [Evans DDD])吃嘿。軟件的產(chǎn)生過程是:分析祠乃、設(shè)計(jì)、編程兑燥、測(cè)試亮瓷、部署。過去降瞳,分析領(lǐng)域和軟件設(shè)計(jì)是分裂的嘱支,分析人員從領(lǐng)域中收集基本概念;而設(shè)計(jì)必須指明一組能在項(xiàng)目中適應(yīng)編程工具構(gòu)造的組件挣饥,這些組件必須能夠在目標(biāo)環(huán)境中有效執(zhí)行除师,并能夠正確解決應(yīng)用程序出現(xiàn)的問題。模型設(shè)計(jì)設(shè)計(jì)(Model-Driven Design)拋棄了分裂分析模型與設(shè)計(jì)的做法扔枫,使用單一的模型來滿足這兩方面的要求汛聚。這就是領(lǐng)域模型。


DDD領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)



4茧吊、六邊形架構(gòu)架構(gòu):六邊形架構(gòu)(Hexagonal Architecture)贞岭,又稱為端口和適配器架構(gòu)風(fēng)格,其中的“六”具體數(shù)字沒有特殊的含義搓侄,僅僅表示一個(gè)“量級(jí)”的意思,六邊形的定義只是方便更加形象的理解话速。我們知道分層架構(gòu)的重要作用就是避免耦合的出現(xiàn)讶踪,經(jīng)典分層架構(gòu)和六邊形架構(gòu)都是分層架構(gòu)的一種,但是所發(fā)揮的作用會(huì)有些不同泊交,經(jīng)典分層架構(gòu)更多的精力放在抽象的分離上乳讥,每個(gè)層的職責(zé)分的很明確,各個(gè)層的依賴關(guān)系更加抽象化廓俭,從而避免耦合的出現(xiàn)云石,而在六邊形架構(gòu)中,是用“組件化”的形式來避免耦合的出現(xiàn)研乒,每個(gè)業(yè)務(wù)單元盡可能的最小化汹忠,然后把這些業(yè)務(wù)組件集合起來,用一個(gè)錘子把他們都拍扁雹熬,所以宽菜,在整個(gè)集合中,這些小的業(yè)務(wù)單元都是“平等的”竿报,這種方式用一個(gè)詞來概括铅乡,那就是“扁平化”。


六邊形架構(gòu)架構(gòu)


三烈菌、設(shè)計(jì)模式

? ? ? ?設(shè)計(jì)模式(Design Pattern)是一套被反復(fù)使用阵幸、多數(shù)人知曉的花履、經(jīng)過分類的、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)挚赊。使用設(shè)計(jì)模式的目的:為了代碼可重用性诡壁、讓代碼更容易被他人理解、保證代碼可靠性咬腕。 設(shè)計(jì)模式使代碼編寫真正工程化欢峰;設(shè)計(jì)模式是軟件工程的基石脈絡(luò),如同大廈的結(jié)構(gòu)一樣涨共。

1纽帖、設(shè)計(jì)模式的重要性:

? ? ? ?設(shè)計(jì)模式是高級(jí)軟件工程師和架構(gòu)師面試基本必問的項(xiàng)目(先通過面試進(jìn)入這個(gè)門檻我們?cè)僬勂渌?/p>

? ? ? ?設(shè)計(jì)模式是經(jīng)過大量實(shí)踐檢驗(yàn)的安全高效可復(fù)用的解決方案。不要重復(fù)發(fā)明輪子举反,而且大多數(shù)時(shí)候你發(fā)明的輪子還沒有已有的好

? ? ? 設(shè)計(jì)模式是被主流工程師/架構(gòu)師所廣泛接受和使用的懊直,你使用它,方便與別人溝通火鼻,也方便別人code review(這個(gè)夠?qū)嵲诎桑?/p>

使用設(shè)計(jì)模式可以幫你快速解決80%的代碼設(shè)計(jì)問題室囊,從而讓你更專注于業(yè)務(wù)本身

? ? ? ?設(shè)計(jì)模式本身是對(duì)幾大特性的利用和對(duì)幾大設(shè)計(jì)原則的踐行,代碼量積累到一定程度魁索,你會(huì)發(fā)現(xiàn)你已經(jīng)或多或少的在使用某些設(shè)計(jì)模式了

? ? ? ?架構(gòu)師或者team leader教授初級(jí)工程師設(shè)計(jì)模式融撞,可以很方便的以大家認(rèn)可以方式提高初級(jí)工程師的代碼設(shè)計(jì)水平,從而有利于提高團(tuán)隊(duì)工程實(shí)力


四粗蔚、代碼形式

? ? ? 這樣子解釋架構(gòu)尝偎、設(shè)計(jì)模式應(yīng)該能讓你更加了解它:

? ? ? 我現(xiàn)在要蓋一棟房子(需求),房子當(dāng)然要蓋得漂亮大方美觀一點(diǎn)去把全國(guó)最有名的設(shè)師Jack叫過來把我的房子先設(shè)計(jì)出來讓我看一看(架構(gòu)師)鹏控,恩~~Jack果然是老司機(jī)設(shè)計(jì)的我很滿意 不過這個(gè)房子的左邊不要蓋出來要留出來一部分讓我以后的孩子來用致扯,還有右上角要多加個(gè)走廊還有房子的院前要留出啦一部分當(dāng)花園,針對(duì)這么多需要更變Jack爽快的答應(yīng)了当辐,一點(diǎn)也不苦惱因?yàn)镴ack早就想到會(huì)變更偷偷運(yùn)用了自己總結(jié)了一生的方案(設(shè)計(jì)模式)抖僵。好了搬磚的搬磚、砌墻的砌墻缘揪、工人們依靠Jack給出的設(shè)計(jì)愉快的蓋著房子(程序員~~)耍群。


Github:https://github.com/blindmonk/design_patterns

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市寺晌,隨后出現(xiàn)的幾起案子世吨,更是在濱河造成了極大的恐慌,老刑警劉巖呻征,帶你破解...
    沈念sama閱讀 221,331評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件耘婚,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡陆赋,警方通過查閱死者的電腦和手機(jī)沐祷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,372評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門嚷闭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人赖临,你說我怎么就攤上這事胞锰。” “怎么了兢榨?”我有些...
    開封第一講書人閱讀 167,755評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵嗅榕,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我吵聪,道長(zhǎng)凌那,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,528評(píng)論 1 296
  • 正文 為了忘掉前任吟逝,我火速辦了婚禮帽蝶,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘块攒。我一直安慰自己励稳,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,526評(píng)論 6 397
  • 文/花漫 我一把揭開白布囱井。 她就那樣靜靜地躺著驹尼,像睡著了一般。 火紅的嫁衣襯著肌膚如雪庞呕。 梳的紋絲不亂的頭發(fā)上扶欣,一...
    開封第一講書人閱讀 52,166評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音千扶,去河邊找鬼。 笑死骆捧,一個(gè)胖子當(dāng)著我的面吹牛澎羞,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播敛苇,決...
    沈念sama閱讀 40,768評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼妆绞,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了枫攀?” 一聲冷哼從身側(cè)響起括饶,我...
    開封第一講書人閱讀 39,664評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎来涨,沒想到半個(gè)月后图焰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,205評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蹦掐,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,290評(píng)論 3 340
  • 正文 我和宋清朗相戀三年技羔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了僵闯。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,435評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡藤滥,死狀恐怖鳖粟,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情拙绊,我是刑警寧澤向图,帶...
    沈念sama閱讀 36,126評(píng)論 5 349
  • 正文 年R本政府宣布,位于F島的核電站标沪,受9級(jí)特大地震影響榄攀,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜谨娜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,804評(píng)論 3 333
  • 文/蒙蒙 一航攒、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧趴梢,春花似錦漠畜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,276評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至彰阴,卻和暖如春瘾敢,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背尿这。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工杂靶, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留比勉,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,818評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像锨络,于是被迫代替她去往敵國(guó)和親隅俘。 傳聞我的和親對(duì)象是個(gè)殘疾皇子攻谁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,442評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容