道與架構(gòu)

“一個設(shè)計模式引發(fā)的血案”

雖然作為一個菜雞虐呻,可能還談不上架構(gòu),但是就像說說自己的一些想法船殉。

01 一個設(shè)計模式引發(fā)的血案

事情要從 2018.8.30 晚上說起更振。

由于心血來潮炕桨,想想也沒事情干,就啃完了阮一峰的《ES6 入門》肯腕∠坠看到最后幾章中提到了 Decorator(修飾器),感覺很新奇实撒。好像 OC 中沒有類似的語法糖姊途,但是在 Java 中見過。但是心想知态,不就一個裝飾器模式么捷兰?有啥好特別的,當(dāng)時也沒有多想负敏,就合上書贡茅,睡覺去了。

第二天其做,也不知道哪根筋搭錯了顶考,就問起了大佬。

  • 大佬妖泄,OC 中好像沒有裝飾器模式驹沿?Java 和 JS 中貌似都有語法糖的樣子?

  • cocoa touch 里面沒見過蹈胡。

(黑人問號渊季??审残?)

  • category 不算么梭域?裝飾器模式不就是對于類的方法或者變量的補(bǔ)充么?

  • category 跟典型的 decorator pattern 不太一樣搅轿,decorator 實例會有一個指向原實例的指針病涨,原實例沒有被改變,還可以獨(dú)立使用璧坟,category 的話既穆,就不是這樣,decorator 就像是消音器雀鹃,可以拆卸幻工,category 是把槍械的設(shè)計圖紙改了±杈ィ”

囊颅??? 難道是我記錯了

基于好奇心踢代,去 wiki 上查了下盲憎, wiki 的解釋如下。

What problems can the Decorator design pattern solve?

Responsibilities should be added to (and removed from) an object** dynamically at run-time**.

A flexible alternative to subclassing for extending functionality should be provided.

Emmmmm 好像不是胳挎。不死心的我饼疙,建了個工程試了下,好像還真不是慕爬。就算沒有引用 category file 也能正常通過 performSelector 直接調(diào)用窑眯。又記起 category 還像是在編譯期加入方法的,當(dāng)時的我

學(xué)藝不精医窿,告辭0跛Α!留搔!

02 “術(shù)”與“道”

當(dāng)然更胖,摸到大佬的腿肯定就不能這么輕易放開的。

  • 那么隔显,怎么才能成為和大佬一樣的人呢却妨?對于那么多細(xì)節(jié)上的點(diǎn)就都熟記于心呢?

  • Emmmmmmm...... 實際上括眠,設(shè)計模式的書我都沒看過

  • 實際上彪标,設(shè)計模式,算是“術(shù)”掷豺,你要是領(lǐng)會了“道”捞烟,術(shù)是很容易的。

不得不說当船,大佬就是大佬题画,有的話就是有深度。再細(xì)細(xì)體會了許久并和大佬繼續(xù)深入交流之后德频,終于有所領(lǐng)悟苍息。

03 “術(shù)”與“道”

何為術(shù)?何為道壹置?

說起術(shù)和道竞思,腦海中印象最深的,就屬動漫《一人之下》(原名異人)中的諸葛青和王也道長兩個人物了钞护。(一人之下作者米二對于整部作品注入了大量道家相關(guān)的元素盖喷,奇特的畫風(fēng),耳熟能詳?shù)目谝裟压荆屓税V迷不已课梳,強(qiáng)烈安利距辆。)諸葛青和王也道長均為術(shù)士,所用的呢都是術(shù)法惦界,說起術(shù)法就不可不談道家的奇門遁甲挑格。

奇門遁甲指的是奇門和遁甲。奇就是乙(日)沾歪、丙(月)、段硐(星)三奇灾搏,為天時×⑷螅“門”就是休狂窑、生、傷桑腮、杜泉哈、景、驚破讨、死丛晦、開八門(在排宮法中是八門,在飛宮法中九門:休提陶、死烫沙、傷、杜隙笆、中锌蓄、開、驚撑柔、生瘸爽、景),為方位铅忿。遁就是隱藏剪决,“甲”指六甲,即甲子辆沦、甲戌昼捍、甲申、甲午肢扯、甲辰妒茬、甲寅,“甲”是在十干中最為尊貴蔚晨,它藏而不現(xiàn)乍钻,隱遁于六儀之下肛循。

在中國傳統(tǒng)文化中,奇門遁甲被認(rèn)為是以易經(jīng)和八卦為基礎(chǔ)银择,結(jié)合星相歷法多糠、天文地理、八門九星浩考、陰陽五行夹孔、三奇六儀等要素的一門學(xué)問。

——以上內(nèi)容引自維基百科

而作為術(shù)析孽,奇門遁甲自古以來就是通曉天地的規(guī)律搭伤,了解世間萬的“”理,從而做到真的趨吉避兇袜瞬×或者說我認(rèn)為,術(shù)實際上是人對于道的一種運(yùn)用邓尤。

那么如果把設(shè)計模式作為“術(shù)”拍鲤,他用于解決我們平常所遇到的業(yè)務(wù)模塊,那么道是什么汞扎?

深感迷惑的我被大佬的一句話點(diǎn)醒季稳。

道可道,非常道佩捞。

04 設(shè)計模式與兵法

俗話說:兵無常勢绞幌,水無常形。

我們?nèi)粘5臉I(yè)務(wù)場景就是一個個的難題一忱,很多時候莲蜘,我們會發(fā)現(xiàn),現(xiàn)有的架構(gòu)帘营,沒有辦法很好的契合到業(yè)務(wù)場景當(dāng)中票渠。真的是我們的架構(gòu)不對么?實際上并不是芬迄。那是因為我們的業(yè)務(wù)場景太多變么问顷?實際上也不是。那么問題究竟處在哪呢禀梳?

17世紀(jì)英國哲學(xué)家培根曾經(jīng)說過:“讀史可以明智”杜窄。既然想不出個所以然來,那就看看古人是怎么做的算途。

古時候天下分久必合合久必分塞耕,各個帝王能夠贏下各個城池,所需要考慮的東西嘴瓤,肯定比我們現(xiàn)在碰到的業(yè)務(wù)場景多得多扫外。那么當(dāng)時有什么精華可以讓我們學(xué)習(xí)的呢莉钙?想必唯有“陣法”可以一學(xué)。

而說到陣法筛谚,可能就要說一說《夢幻西游》玩家都知道的一個人磁玉,鬼谷子。鬼谷子在《夢幻西游》代表著各個陣法驾讲。而史書中記載蚊伞,鬼谷子是戰(zhàn)國時期縱橫家的鼻祖(讓我不禁聯(lián)想到了《秦時明月》),座下弟子無數(shù)蝎毡,而最為人所知的厚柳,可能就是兵家代表人孫臏。而孫臏所著的《孫臏兵法》中沐兵,將陣完整系統(tǒng)地分為八種陣型。既:“方便监、圓扎谎、錐行、雁行烧董、鉤行毁靶、玄襄、疏陣逊移、數(shù)陣预吆、火陣、水陣胳泉」詹妫”

那么陣法有什么可以學(xué)的呢?

陣法看似規(guī)整(只有這幾種)扇商,實則不然凤瘦。所有的陣法均看將領(lǐng)的指揮,對于不同的敵方的陣型案铺,有的時候不僅僅需要陣型的切換蔬芥,有的時候還需要對陣型進(jìn)行改造,進(jìn)行創(chuàng)新控汉,而設(shè)計模式也類似與此笔诵。

業(yè)務(wù)沒有永久的不變的業(yè)務(wù),而設(shè)計模式也沒有永久不變的設(shè)計模式姑子,所有的設(shè)計模式衍生出各種各樣的新的架構(gòu)乎婿,從而支持著各種各樣的業(yè)務(wù)場景,從 MVC壁酬,到 MVP次酌,到 MVVM 等等恨课,誰都不能說哪個好,哪個壞岳服。也沒有誰推翻了誰剂公,只是新的能夠支持當(dāng)前業(yè)務(wù)形態(tài)的形式被發(fā)現(xiàn)了,為的就是能夠更好的支持各種各樣的業(yè)務(wù)場景吊宋。

04 道可道纲辽,非常道

就如大佬所說:道可道,非常道璃搜。

這句話在我理解有兩層意思:

一拖吼、道可道,非“痴馕牵”道


道看似不變吊档,實際上一直在變,他永遠(yuǎn)不會以一種常態(tài)出現(xiàn)在你的面前唾糯。

業(yè)務(wù)場景是如此怠硼,架構(gòu)亦是如此。你永遠(yuǎn)不會觸碰到同一種業(yè)務(wù)移怯,每種業(yè)務(wù)都有自己的獨(dú)特點(diǎn)香璃。

二、道可道舟误,“非称厦耄”道


俗話說:道生一,一生二嵌溢,二生三眯牧,三生萬物,萬物歸一堵腹。萬物看似皆在變炸站,實則皆不變。道仍然是道疚顷,變得只是他的表象旱易。而現(xiàn)有的設(shè)計模式思路也是如此,說白了就是如何對于每個模塊進(jìn)行優(yōu)雅的拆分腿堤,從而更好的進(jìn)行組合阀坏。而為的就是每塊代碼能夠更好的對那一塊內(nèi)容進(jìn)行解釋。而這就是一種求極限的思路笆檀,如何讓設(shè)計模式產(chǎn)出的內(nèi)容能夠與業(yè)務(wù)形態(tài)進(jìn)行映射忌堂。

就像當(dāng)我們遇到問題的時候會有2個域,一個是 problem domain(待解決問題的領(lǐng)域)酗洒,一個是 solution domain(對問題提出解決方案的領(lǐng)域)士修。有的時候看到 problem domain枷遂,我們就能提出正確以及優(yōu)雅的解,那是因為我們看穿了這個問題的本質(zhì)和某種設(shè)計模式相類似棋嘲,直接套用即可酒唉。但是有的情況下我們并沒辦法提出最優(yōu)雅的解。而這個時候沸移,我們站在開發(fā)的角度痪伦,需要不斷的向產(chǎn)品提出自己的疑惑****,從而明白雹锣,產(chǎn)品真正需要的是什么网沾?當(dāng)弄清楚這個問題之后,我們所需要做的就是如何優(yōu)雅地將 problem domain 映射到 solution domain 上蕊爵。

05 映射與最優(yōu)解

那么有的時候我們會想辉哥,這些解決方案,從哪來呢攒射?

有人可能會說证薇,前輩們留下來的唄。

那么再往前呢匆篓?在沒有設(shè)計模式這個概念提出來的時候呢?

勞動人民日積月累的寶貴經(jīng)驗寇窑?

那再往前呢鸦概,在歷史的長河之中呢?

帝王甩骏?Emmmmmmm窗市??饮笛?

那個時候可能不叫解決方案咨察,可能叫做《帝王術(shù)》。就像前面說到福青,“讀史可以明智摄狱。”很多情況下无午,歷史已經(jīng)告訴了我們很多經(jīng)驗媒役。

以 JS 的數(shù)據(jù)存儲為例,一般情況下為人所熟知對于 Store 的存儲有兩個方向宪迟,一個是集中式——redux酣衷,一個是分布式——mobx。你說這兩個設(shè)計思路很新穎次泽?實則不然穿仪,redux 更像是中央集權(quán)制度的映射席爽,如果一個人修改了主要的 store,那么就會引入臟數(shù)據(jù)啊片,從而影響整個工程只锻;而 mobx 更傾向于權(quán)力的拆分,映射到數(shù)據(jù)而言钠龙,就是讓數(shù)據(jù)與數(shù)據(jù)之間彼此獨(dú)立(由于對于 JS 這幾個庫不怎么熟悉而且不是這次討論重點(diǎn)炬藤,只能點(diǎn)到為止)

那么具體哪個是最優(yōu)解呢?誰也說不出碴里,因為對于不同的業(yè)務(wù)場景沈矿,最終的結(jié)論都是不同的。

05 問題與本質(zhì)

所以說無論問題有多難咬腋,在對問題不斷拆解的過程羹膳,就是一個不斷探索問題本質(zhì)的過程。寫代碼是如此根竿,做產(chǎn)品亦是如此陵像。

說到這有人可能不信了?做產(chǎn)品還能有本質(zhì)這一說寇壳?

無論哪一款爆款的產(chǎn)品醒颖,最終能被眾人接受的原因就是滿足了人的“七大罪”—— 傲慢、貪婪壳炎、色欲泞歉、嫉妒、憤怒匿辩、暴食及怠惰腰耙。前五個可能風(fēng)險系數(shù)較高,所以一般容易出事情铲球,而最后兩個挺庞,一個是美食,也就是吃吃吃稼病。另一個就是懶选侨。

世間流傳著一句話:這個世界實際上是由懶人推動的。因為當(dāng)一個人想要變得懶惰的時候溯饵,他會想辦法找到各種更加快捷或者更加方便的事物進(jìn)行代替侵俗。機(jī)器人取代人,軟件操作系統(tǒng)取代日常文件的維護(hù)丰刊,移動端取代 PC 端逐漸成為時代的主流……

06 道與編程

扯了那么多隘谣,最后總結(jié)一些個人的想法:實際上編程和道是一樣的,包括大數(shù)據(jù)亦是如此。都是不斷得在追求事物的規(guī)則寻歧,甚至是本源掌栅,并將其進(jìn)行規(guī)則化或者說通過規(guī)則進(jìn)行描述。就像 05 中提到的码泛,世間萬物都是會隨著時代變遷朝著熵增(混亂度增加猾封,有序變成無序)的方向發(fā)展,而人為了能夠讓自己過得更加舒服(變得更懶)噪珊,就會不斷得將無序轉(zhuǎn)變成為有序晌缘。而作為一個程序員,有的時候不僅僅滿足于自己的能夠做出一個產(chǎn)品痢站,更能在處理問題的過程中磷箕,驚奇的發(fā)現(xiàn)一個個神奇的規(guī)律。那種對于規(guī)則的不斷探索所產(chǎn)生的 High 點(diǎn)阵难,可能這就是我還會繼續(xù)寫代碼的原因吧……

當(dāng)然有的時候我也會不斷思考如果強(qiáng)人工智能真的出現(xiàn)了(也就是人類真的發(fā)現(xiàn)了人這個東西中的所有規(guī)則)會怎么樣岳枷?那就是下一篇文章中的故事了。

歡迎關(guān)注我的公眾號:zkhCreatorPro

聊聊產(chǎn)品呜叫,談?wù)勅松辗保艺f的不一定是對的,但是都是我思考過的朱庆。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末盛泡,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子娱颊,更是在濱河造成了極大的恐慌饭于,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件维蒙,死亡現(xiàn)場離奇詭異,居然都是意外死亡果覆,警方通過查閱死者的電腦和手機(jī)颅痊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來局待,“玉大人斑响,你說我怎么就攤上這事∏ィ” “怎么了舰罚?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長薛耻。 經(jīng)常有香客問我营罢,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任饲漾,我火速辦了婚禮蝙搔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘考传。我一直安慰自己吃型,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布僚楞。 她就那樣靜靜地躺著勤晚,像睡著了一般。 火紅的嫁衣襯著肌膚如雪泉褐。 梳的紋絲不亂的頭發(fā)上赐写,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天,我揣著相機(jī)與錄音兴枯,去河邊找鬼血淌。 笑死,一個胖子當(dāng)著我的面吹牛财剖,可吹牛的內(nèi)容都是我干的悠夯。 我是一名探鬼主播,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼躺坟,長吁一口氣:“原來是場噩夢啊……” “哼沦补!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起咪橙,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤夕膀,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后美侦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體产舞,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年菠剩,在試婚紗的時候發(fā)現(xiàn)自己被綠了易猫。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡具壮,死狀恐怖准颓,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情棺妓,我是刑警寧澤攘已,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站怜跑,受9級特大地震影響样勃,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一彤灶、第九天 我趴在偏房一處隱蔽的房頂上張望看幼。 院中可真熱鬧,春花似錦幌陕、人聲如沸诵姜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽棚唆。三九已至,卻和暖如春心例,著一層夾襖步出監(jiān)牢的瞬間宵凌,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工止后, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留瞎惫,地道東北人。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓译株,卻偏偏與公主長得像瓜喇,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子歉糜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評論 2 350

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

  • 陣法稱之為“布陣”乘寒,是古代軍隊的野戰(zhàn)隊形,它是人類戰(zhàn)爭發(fā)展到一定歷史階段的產(chǎn)物匪补,盛行于冷兵器時代伞辛,消亡于熱兵器時代...
    曉寒深處明月人倚樓閱讀 4,611評論 0 2
  • 這幾天和孩子談心,深深感觸夯缺,用這樣的形式表達(dá)出來房官,大家共勉蹭沛。 教育沒有抗生素 當(dāng)孩子出現(xiàn)問題時浩姥, 不能像生病吃藥一...
    武傳華閱讀 216評論 0 0
  • 沒有任何準(zhǔn)備嘉抒,我把她帶回家折联,給她一個紙箱子安了窩过蹂。我每天都在忙冷尉,只有晚上豁跑,她跟我睡殿怜,一關(guān)燈她就爬進(jìn)我被子里典蝌,小腦袋...
    楊顏閱讀 354評論 3 6
  • 一年一度的初中運(yùn)動會,快要開始了头谜,在運(yùn)動會的骏掀,前兩天我們先舉行一次拔河比賽,到運(yùn)動會那天才開始爭奪真正的決賽。 這...
    李冠良閱讀 230評論 0 0
  • 《祭奠的鬼》 我沒有一個茅草屋遮擋風(fēng)雨 我也不知道自己在逃避什么 也許在很多天后我可以分辨 就像貓兒蜷縮角落瞇著眼...
    奕血航閱讀 212評論 0 3