主頁 > 軟體設計 > 那些技術實戰中的架構設計方法

那些技術實戰中的架構設計方法

2022-09-20 08:30:38 軟體設計

上個月我寫的一篇文章《關于技術能力的思考和總結》引起了大家的關注,好多讀者的評論“以寫代想、以想促真、以講驗真”,大家的感受很深刻,基于上次的文章,這篇文章我其實更想跟大家聊聊一些常用的思考方法,思考問題的方式對了,往往可以幫助大家少走彎路,

 

常用思考方法

 

 

 

技術常用思考方法

 

技術思考本質還是結構化思考,所以常見的結構化思考方法也是適用的,這也是大家會看到很多技術架構師都會用一些方法論去分析問題的原因,但這里我不是重新去論述這些常見的技巧,而是分享從技術實戰中得到的一些思考方法,為此我分為了技術架構設計的方法和技術Leader的思考方法兩類,

 

技術架構思考方法

 

0--->1

 

 

這個思考方法的含義是:

 

當我們在一堆迷茫和混亂中不知道如何下口時,應該先貼近問題本身,還原客觀事實,并快速形成 1 個能夠拉起認知并快速討論迭代優化的版本,大家圍繞著這樣的一個初始版本去疊加和豐富其他維度的內容,直到方案的共識,

 

我舉一個實際的CASE,大家在談某平臺能力升級的方案時候會經常喜歡用PPT畫一些模塊圖,試圖通過一些抽象的詞匯來厘定清楚邊界,核心概念,大家以為是在講本質講原則但實際所有人聽了都是云里霧里,不知所云,因為通過概念去推導概念是無法真正回答問題的,

 

而比較好的應對方法我總結為以下三個步驟:

 

  • 【用戶視角的客觀世界還原】

 

用戶故事的串聯,基于互動流程和真實的資料來描繪這件事在客觀世界中用戶視角看來是怎么發生的,這就是我們找準一個大家都能夠共識的視角,讓所有人快速把客觀事實搞清楚畫出來這個 1,而這個 1 就是后續討論的靶子 ,這個 1 的表現形式我認為往往都是很簡單的,要么是互動時序圖,要么是Excel表格,而不是復雜的模塊概念圖, 

 

  • 【客觀資訊的結構化整合與提煉】

 

只是樹立起來 1 這個初始版本,還遠遠不夠,因為第一個步驟只是將模糊、混亂的東西通過一種方法資訊化表達出來,這還遠遠達不到使用的程度,所以還需要將上述資訊進行結構化的整合與提煉,因為資訊只有經過結構化才能夠變成有意義的知識,才能夠與之前的經驗形成互動,也才能夠進行初版的設計加工,比如對資料流的處理,就會發現有哪些是可以合并的同類項,有哪些平衡校驗邏輯等,

 

  • 【加入多元視角的檢驗與抽象】

 

通過第二步的處理把 1 這個版本變得更加豐滿,但是要形成完整的可實施方案還遠遠不夠,我們還需要加入更多維度的校驗和抽象,比如進一步抽象以看透其本質,比如加入重要例外,ROI,合理性等擴展性等多方的視角去做校驗,

 

所以大家以后在遇到很多方案談不清楚的時候,不要去聽別人講什么原則,概念,價值等等虛頭巴腦的東西,把大家拉回來,回到最簡單的最樸素的東西來對焦,那就是 一張互動序列圖 或者 一張表格,越快速從一堆迷茫中快速提煉出這個 1 ,就越容易快速拿到結果,

 

1--->0

 

這個思考方法的含義是:

 

當我們在做一個方案時面對無數因素無法抓住關鍵點時,我們應該考慮洗掉法(把這個 1 拿掉不要行不行)去尋找決定性因素,以確保我們是真正的抓到了關鍵點,

 

我舉一個實際的CASE,每年都會做技術規劃,相信這是很多架構師/Leader很痛苦的事,痛苦的根源就是在腦子里面有無數需求,有無數的待優化點,也有無數的想法在縈繞,看到每個點覺得值得在新一年做攻堅,最終多半形成的就是一個表格,把今年要做的事羅列下,最多還排個優先級,好一點的換個形式變成xmind或者PPT,再稍微好一點的可能會搭配上業務的目標和策略打法,但透過這些表面現象,其本質就是一個表格,沒有抓住重點的表格,相信大家應該都看得蠻多的了,

 

如何應對這類問題我總結為以下幾個技巧:

 

  • 【因果判斷法】

 

很多時候我們都在談,要抓住事情的本質,要具備化繁為簡的能力,其實就是在談通過表面的結果去探究真實的原因,所以在看哪些是決定性因素時,大家不妨用因果法去檢驗:這個因素到底是深層次原因還是誘導的結果,

 

  • 【樹干樹枝法】

 

有時候各個因素之間并不是單純的因果關系,而是依附關系,就像是樹枝依附在樹干上一樣,而我們要找到決定性因素,可以嘗試這個方法去檢驗:如果把這個因素去掉會不會影響全域,是不是導致結論不成立,通過這樣多輪的分析,是可以繪制出來樹干的與樹枝的關系,這個樹干就是要找的決定性因素,

 

  • 【支點撬動法】

 

有時候各個因素之間可能沒有直接或者間接關系,或者這個關聯關系太弱很難通過以上兩個手段去確定關鍵點,可以嘗試支點撬動的辦法,即尋找可以激發這一堆要素的關鍵要素,我之前給團隊舉一個例子,國家抓經濟肯定不可能是米面糧油各種瑣碎地抓,肯定是找到幾個關鍵點起到支點撬動的作用,如房地產行業,抓住這個就能夠帶動上下游產業,進而激發各行各業,

 

以上是目前實踐下來的抓取關鍵點的一些方法,但這里一定也要注意一個粒度問題,千萬不要走極端,比如一提關鍵點,就去思考本質,一提到本質就去找根因,一找根因就挖到人性,然后得出來就是人性的原罪問題,這種都是沒有任何營養的做法,也不利于事情的推動解決,

 

1--->2

 

這個思考方法的含義是:

 

當我們思考一些抽象問題/方案時候,需要對問題進行拆分(一分為二),通過分而治之的方法來確定每個小問題的邊界,通過對小問題的解決來降低全域的思考難度,以盡快形成解決方案,

 

這個應該不需要舉例子了,大家日常都應該有所接觸,這里只是列舉幾個比較典型的技術架構動作:

 

  • 【縱深拆解】

 

拆解是非常好的一個將問題分而治之的辦法,但要注意的是要做有機的拆解而不是物理的分解,比較典型的案例就是關于故障指標這個課題的處理,我是見過有團隊層層分解,把故障指標分解到每個同學身上,這是極其錯誤的做法,也不可能得到想要的結果,我們應該是要做拆解,就是把要守住故障指標這個結果拆解成哪幾類關鍵動作,進而要求團隊關鍵動作做到位,而不是強行分解指標,

 

  • 【橫向解剖】

做過實際研發的同學一定遇到一些業務需求的討論,很多時候來來回回扯不清楚,而且經常會出現產品說這是技術架構問題,技術架構說這是業務需求問題,業務方說這是產品設計問題的現象,要破解這個僵局就需要把這個問題進行解剖,一層一層解剖清楚,把業務需求問題描述清楚,把產品設計搞清楚,把技術方案搞清楚,每一層都面向上游屏蔽下游的細節,才有可能把問題定義得清楚,一般來說,將這件事參與的角色進行解剖會更容易看得全面,更透徹,
以上是我實踐對問題拆分的一些方法技巧,凡事多看幾層終歸是能夠更加有結構性地認知事情本事,也越有利于問題的解決,


1--->N
這個思考方法的含義是:
當我們思考一些技術方案時候,不要僅局限在當時當刻的條件約束,要適當考慮系統的承載從1變到N的程序中的對系統架構帶來的挑戰,
做技術架構師的都知道做架構要求有前瞻性,不能被業務拖著走,但很多時候我們其實沒有仔細思考如何才能夠做到前瞻性,我總結為最關鍵的考慮的因素就是時間,把時間拉長來考慮關鍵生產資料可能發生什么變化,通過去架構這種變化所得出來的方案就具備了前瞻性,一般意義上來說,我們平臺演進的生產資料抽象地歸納為三類:

  • 業務場景:這是最原始的生存資料,更是平臺演進的源動力,典型的如市場份額變化,用戶體價值的變化,競對動態等,

 

  • 團隊組織:是人創造了平臺,也是主導平臺的演進發展,這個生產資料如果不能得到有效利用,充分釋放能動性就會出現平臺無法支持業務快速發展,同時人也在平臺中內卷,

 

  • 技術架構:技術架構其實本身也是非常重要的生產資料,這是很多人會忽略的地方,大家想一個最簡單的例子,同一個變數分散在多個地方導致語意不清,維護成本巨大就明白了,


針對這幾個生產資料我抽取了幾個技巧去思考如何從 1 擴張到 N:

  • 【架構考慮所有可能性但做有限明確實施】


從業務場景的變化情況來看,的確充滿很多不確定性,也遇到過一種典型的業務與架構的死回圈的情況:前端業務面臨太多不確定性需要技術架構給予專業意見和評估,但是技術架構認為業務啥都想不清楚還要我評估這評估那,兩邊就開始互相死鎖,
而比較好的做法就是架構能夠基于自己的經驗和業務變化的理解,將可能性進行羅列考慮,然后給出來基于XX業務假設下,系統架構需要XX量級的作業量做XX樣的能力迭代升級,可以做到XX的業務效果和價值,但需要進一步XX的業務輸入,這就是架構考慮所有的可能性的含義,是需要給予業務的選擇,
但技術架構實施卻未必是要留有太多的空白,架構要大但是實施要小,對于值得留白的地方做好擴展設計,對于實在看不清楚的地方就要明確攔截(寧愿不做也不錯做),將可能性留足但也不瞎埋坑,

  • 【沒有靠譜的人只有靠譜的機器】


我常常去聽一些故障復盤會議,在談以后如何改進的時候很多同學都價值觀爆棚,說以后XX類變更都加簽上我來審核一道,我確認沒問題再往后走,雖然這種精神值得鼓勵但是這種做法實在是很不值得推薦,這樣沉淀出來的平臺其實是非常脆弱的,在做技術方案時一定要思考能夠交給系統的絕對不能用流程,能夠做到領域模型校驗的千萬不要靠旁路系統的側面印證(如不必要場景下的核對),

  • 【提前思考“幸福”的煩惱】


很多技術同學都希望做高并發大流量的系統,但很多時候在寫代碼的時候身體很誠實,怎么簡單怎么來,實際做的時候既不考慮大流量也不考慮高并發,對于資損風險考慮也極其少,而且基本上都很有道理:現在的業務量沒到不需要考慮那么多,這種事發生概率極其小一期先這樣......要對技術架構做提前思考就必須從每行代碼做起,提前考慮高并發大流量和嚴謹性,
通常來說大家其實都比較喜歡從0到1的程序,按斬訓聯網的迭代式打法,后面的1到N的程序也會被不斷壓縮,所以提前在0到1的程序加入1到N的架構預判非常重要,因為很多時候結構性的問題在最開始就決定了,而且只有一次機會,

 

-1<--->1


這個思考方法的含義是:當我們思考一些技術方案時候,不要一條道走到黑,要前后、上下、左右、正反多個方面去思考,讓技術方案具備更多維的視角,
我把常用的技巧總結如下:

  • 【正反思考法】


日常也review了很多同學產出的架構方案和系分以及測分,大家對于正常業務需求功能的論述基本上都沒有啥大問題,按部就班去寫就可以,但普遍的問題都是對對問題的反面論述不多,如支付正常流程濃墨重彩,退款/拒付等逆向流程就沒那么細致,業務功能正常流轉論述很飽滿但是例外場景就寥寥幾筆,但正面與反面結合起來才是完整的一體,而且對反面的思考其實是對正面的有益補充,而且通常來說,我們在正面出現的概率大于反面,但是反面出現差錯的影響所需要付出的精力卻遠遠大于正面,

  • 【極限思考法】


在review技術架構方案風險相關的內容時,我都會特意問一下,如果出現XX問題最壞的業務影響是什么,為什么是問最壞的業務影響,是因為如果談風險那肯定都是有一點點的,不利于大家去深究最關鍵的問題,通過極限設問,其實是激發大家去做最壞的打算,有了最終極的兜底手段才能夠更樂觀去做技術變更,

  • 【對稱思考法】


在review代碼或者邏輯結構時,在深挖細節和關鍵點后,我時常會拔出來看看整體的邏輯結構是不是飽滿,是不是對稱,是不是美,最簡單的例子就是寫了if 我一定要有else,不然沒對稱結構就讓我很不舒服,因為我相信對稱的美就是一種生產力,因為美的東西一定是簡潔且直達本質的,而我們寫程式要的就是邏輯清晰簡單直達業務本質,邏輯結構清晰的基本上沒大問題,不清晰(如變數瞎命名,方法無語意)的深挖下去多半都能發現大問題,根源就是邏輯清晰代碼才清晰,代碼不清晰基本上就是邏輯混亂,邏輯混亂就會產生BUG,


M*N--->M+N
這個思考方法的含義是:當我們思考技術問題時,可以嘗試從系統耦合的角度去思考,嘗試找一些突破口,
我舉一個實際的CASE,高速公路網的連接不是把所有目的地之間都修一條高速公路,而是會選擇修建復用的高速公路主干道 + 分支道路的方式來組織這個網路,一條一條串聯的方式就是耦合在一起的,這就是M * N,通過主干道 + 分支道路的方式 就是解耦的,M + N 就能夠組建這個高速網路,
在技術架構上如何運用解耦這個技法,我有如下幾個提煉,

  • 【解耦上下游關聯性】


在業務和技術架構發展的前期,把很多東西糅雜在一起是最快解決問題的方法,但隨著業務和平臺架構的進一步演進,勢必是要做解耦,目的就是重新去界定各個模塊的邊界,平衡新的業務發展要求下各方發展快慢的訴求差異,通過解耦互相松綁快速發展,
這種技法在服務化的分布式架構中非常常見,基本上跨域的平臺架構升級都有解耦的影子,

  • 【解耦各個角色的依賴】


解耦上下游關聯性其實更多是在技術模型的抽象上,但在落入到技術模型范疇之前,還有就是我們在做更加抽象的解決方案探討時要注意解耦各個角色之間的依賴,上述【架構考慮所有可能性但做有限明確實施】中提及的就是最好的案例,其實這里的本質表達就是,技術架構的設計應該要與商業選擇,產品設計等解耦開來,
通過這一層的解耦其實能夠多個角色之間基于SLA去互動,并且能夠基于自身的專業思考給予對方更多的選項和可能性,很多時候的前瞻性和競爭力可能就是比別人多一個選擇,
解耦思考法其實很有意思,幾乎所有的大型平臺架構升級都有這個思考法的影子,所以下次沒啥思路的時候可以從這個角度做一個審視思考,說不定是有新的識訓,

總結


以上是我在做技術架構方案時沉淀總結的一些思考方法,這些思考方法不可能解決遇到的所有實際問題,只能算是一個思考提示,在遇到問題可以嘗試從這幾個方法去看看是否有靈感,基于方法論但是不局限于方法論才是方法論最大的意義和價值,接下來一篇文章,我會從技術Leader的視角談談我在實踐中的一些思考,

 

作者:知明

本文來自博客園,作者:古道輕風,轉載請注明原文鏈接:https://www.cnblogs.com/88223100/p/Architectural-design-methods-in-those-technical-practices.html

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/509154.html

標籤:其他

上一篇:聊聊秒殺系統的設計(三)

下一篇:我的設計模式之旅、13 配接器模式

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more