????????最近看一本書环壤,里面再一次提到了synchronized關(guān)鍵字的原理干签。然而我看著看著丘薛,突然產(chǎn)生了一些其他的聯(lián)想雕凹。synchronized關(guān)鍵字之前一直知道原理和作用,以及使用場景撤卢。就是在線程執(zhí)行時加鎖较幌,鎖是誰?鎖是this妻味。java的this嘛,就是當(dāng)前Object在運行時的instance欣福,如果是靜態(tài)方法责球,那鎖是Class對象。
????????我突然發(fā)現(xiàn)拓劝,this這個詞用的真的是太精準(zhǔn)了雏逾,我還特地想了很久,想想看郑临,用除this之外什么語言和詞匯來描述這個場景栖博,想來想去,都沒有this精準(zhǔn)厢洞。因為this代表了當(dāng)前對象在線程執(zhí)行時實例仇让,一個詞就可以說明鎖誰了典奉。this是java語言里面的關(guān)鍵字,這是典型的站在問題域的視角上描述問題丧叽。
????????由此卫玖,我聯(lián)想到設(shè)計模式。之前看設(shè)計模式踊淳,只知其然假瞬,或許也知其所以然,但始終不得感性上的認(rèn)識迂尝⊥衍裕總是感覺,設(shè)計模式垄开,雖然能解決問題芦劣,但有點羅嗦,一堆接口和類说榆,來組成這個設(shè)計模式⌒橐鳎現(xiàn)在我站在它解決的問題域的角度上來看它時,發(fā)現(xiàn)签财,它成為這個結(jié)構(gòu)和形狀串慰,就是為了它解決的問題,而形成的唱蒸。設(shè)計模式的目標(biāo)是解耦邦鲫、是復(fù)用、是擴展神汹。它的六大原則里面也從各方面來說明庆捺,遵循這些原則,就設(shè)計出符合設(shè)計模式目標(biāo)的軟件結(jié)構(gòu)來屁魏。我從設(shè)計模式目標(biāo)的視角出發(fā)滔以,去思考設(shè)計模式的構(gòu)成和特征,我發(fā)現(xiàn):各種模式被定義為這種結(jié)構(gòu)氓拼,幾個類和接口你画,各司其職,不是為了給人看的桃漾,是為了完成設(shè)計模式的目標(biāo)坏匪,是為了讓程序的擴展和維護更方便。從這個視角出發(fā)撬统,再回顧自己過去用設(shè)計模式及其原則做出的系統(tǒng)适滓,終于有了一種,設(shè)計模式恋追,確實能降低復(fù)雜度凭迹。
? ? ? ? 我發(fā)現(xiàn)罚屋,當(dāng)我們看待問題時,需要站在問題的角度去描述問題和找解決方案蕊苗,而不能站在自己的角度上去描述問題沿后,想當(dāng)然的通過自己的思維,去解釋為什么會這樣朽砰,為什么會那樣尖滚。這看上去是個理所當(dāng)然的結(jié)論,但我用了好久瞧柔,才從感性上去認(rèn)識這個道理漆弄。