自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

“開閉原則” 推崇模塊業(yè)務(wù) “只讀” 的思想,是很好的架構(gòu)治理哲學(xué)

開發(fā) 架構(gòu)
“開閉原則” 推崇模塊業(yè)務(wù) “只讀” 的思想,是很好的架構(gòu)治理哲學(xué)。它告訴我們,軟件是可以以 “搭積木” 的方式搭出來的。核心的一點(diǎn)是,我們?nèi)绾涡纬筛嗟?“積木”,即一個(gè)個(gè)業(yè)務(wù)只讀、接口穩(wěn)定、易于組合的模塊。

開閉原則包含以下兩層含義:

模塊的業(yè)務(wù)穩(wěn)定性是架構(gòu)治理的核心理念之一。按照“只讀”設(shè)計(jì)原則,一旦模塊的業(yè)務(wù)穩(wěn)定,就不應(yīng)頻繁進(jìn)行變更。相反,如果業(yè)務(wù)需要變化,更好的做法是將其歸檔或放棄,以保持系統(tǒng)穩(wěn)定。這種“只讀”思想是架構(gòu)治理的基石,強(qiáng)調(diào)每個(gè)模塊都應(yīng)該是一個(gè)獨(dú)立可完成的單元。實(shí)際上,這也是對(duì)開閉原則在業(yè)務(wù)層面的另一種表述方式。

模塊業(yè)務(wù)的變化點(diǎn)應(yīng)該以簡(jiǎn)單或復(fù)雜的方式開放給其他業(yè)務(wù)模塊。對(duì)于簡(jiǎn)單的變化點(diǎn),可以通過回調(diào)函數(shù)或接口來實(shí)現(xiàn),從而交給其他模塊處理。而對(duì)于更復(fù)雜的變化點(diǎn),可以通過引入插件機(jī)制來將系統(tǒng)分解為“最小化的核心系統(tǒng) + 多個(gè)彼此正交的周邊系統(tǒng)”。需要注意的是,回調(diào)函數(shù)或接口本質(zhì)上就是一種事件監(jiān)聽機(jī)制,因此可以視作插件機(jī)制的特例。這種方式可以有效地管理系統(tǒng)的變化點(diǎn),提高系統(tǒng)的靈活性和可維護(hù)性。

實(shí)際上,我們以前也有設(shè)計(jì)原則,它們之中不乏精彩絕倫、振聾發(fā)聵的總結(jié)。比如:

接口隔離原則(Interface Segregation Principle,ISP):模塊之間的依賴應(yīng)該建立在盡可能小的接口上。這意味著一個(gè)模塊不應(yīng)該依賴于其不需要使用的接口,而應(yīng)該只依賴于其需要的最小接口集合。

依賴倒置原則(Dependence Inversion Principle,DIP):高層模塊不應(yīng)該依賴于低層模塊,它們應(yīng)該依賴于抽象接口。通過依賴于抽象接口,而不是具體實(shí)現(xiàn),可以降低模塊之間的耦合度,提高系統(tǒng)的靈活性和可維護(hù)性。

無環(huán)依賴原則(Acyclic Dependencies Principle,ADP):為了避免循環(huán)依賴,不要讓兩個(gè)模塊之間形成環(huán)狀依賴關(guān)系。解除循環(huán)依賴的方法是遵循依賴倒置原則,依賴于抽象接口而不是具體實(shí)現(xiàn)。

組合/聚合復(fù)用原則(Composition/Aggregation Reuse Principle,CARP):在擴(kuò)展功能時(shí),應(yīng)優(yōu)先考慮使用組合而不是繼承。通過組合的方式,可以靈活地組合不同的功能模塊,而不會(huì)造成繼承鏈的復(fù)雜性和耦合度的增加。

高內(nèi)聚與低耦合(High Cohesion and Low Coupling,HCLC):模塊內(nèi)部應(yīng)該保持高內(nèi)聚,即模塊內(nèi)部的各個(gè)元素應(yīng)該緊密相關(guān),完成相同的功能。同時(shí),模塊之間應(yīng)該保持低耦合,減少彼此之間的依賴關(guān)系,從而提高系統(tǒng)的靈活性和可維護(hù)性。

慣例優(yōu)于配置(Convention over Configuration,COC):為了提高開發(fā)效率,應(yīng)盡量采用慣例而不是過多的配置。通過使用慣例,可以減少配置的復(fù)雜性,提高代碼的可讀性和可維護(hù)性。

命令查詢分離(Command Query Separation,CQS):在定義接口方法時(shí),應(yīng)區(qū)分命令(寫操作)和查詢(讀操作),將它們分離開來。通過分離命令和查詢,可以提高代碼的清晰度和可維護(hù)性。

關(guān)注點(diǎn)分離(Separation of Concerns,SOC):將復(fù)雜的問題分解為多個(gè)簡(jiǎn)單的問題,并分別解決這些簡(jiǎn)單的問題。通過關(guān)注點(diǎn)分離,可以降低系統(tǒng)的復(fù)雜度,提高代碼的可理解性和可維護(hù)性。

這些都是很好很好的。但是,我們需要意識(shí)到的一點(diǎn)是,熟讀架構(gòu)思維并不足以讓我們成為優(yōu)秀的架構(gòu)師。

盡管架構(gòu)思維對(duì)于軟件工程至關(guān)重要,但我們必須牢記,軟件工程的復(fù)雜性是自然存在的,它不會(huì)因?yàn)榱己玫募軜?gòu)思維而消失。因此,雖然理解架構(gòu)思維至關(guān)重要,但真正的架構(gòu)師武器庫并不局限于此。那么,架構(gòu)師的真正武器庫是什么?答案是從架構(gòu)治理開始談起。正如我們之前提到的,“開閉原則”倡導(dǎo)了模塊業(yè)務(wù)的“只讀”思想,這是一種優(yōu)秀的架構(gòu)治理哲學(xué)。它告訴我們,軟件可以像搭積木一樣構(gòu)建。關(guān)鍵在于,我們?nèi)绾涡纬筛嗟摹胺e木”,也就是那些業(yè)務(wù)只讀、接口穩(wěn)定、易于組合的模塊。因此,真正提高我們工程效率的是我們的業(yè)務(wù)分解能力和歷史積累的成果。

在架構(gòu)分解過程中,存在兩大挑戰(zhàn):第一是需求交織,即不同需求混雜在一起,形成了所謂的全局性功能。第二是需求易變,即不同客戶、不同場(chǎng)景下的需求看起來截然不同,并呈現(xiàn)出發(fā)散趨勢(shì)。這些挑戰(zhàn)需要我們認(rèn)真應(yīng)對(duì),以確保軟件系統(tǒng)的靈活性和可維護(hù)性。

作為架構(gòu)師,心性至關(guān)重要。架構(gòu)師需要堅(jiān)守對(duì)業(yè)務(wù)進(jìn)行正交分解的信念,不斷探索各類需求的架構(gòu)分解方法。這種思考過程漸漸形成了各種架構(gòu)范式,它們不僅僅是一些架構(gòu)思維,更是“一個(gè)個(gè)業(yè)務(wù)只讀、接口穩(wěn)定、易于組合的模塊 + 組合的方法論”,構(gòu)成了架構(gòu)師真正的武器庫。

這個(gè)武器庫包含了許多內(nèi)容。首先,它應(yīng)該包括信息科技形成的基礎(chǔ)架構(gòu),將前輩們的經(jīng)驗(yàn)與自己的實(shí)踐相結(jié)合。但光是了解還不夠,更重要的是深刻理解基礎(chǔ)架構(gòu)背后的架構(gòu)邏輯,并確保將其完全融入自己的思維體系中,達(dá)到與基礎(chǔ)架構(gòu)的“同頻共振”。只有這樣,當(dāng)架構(gòu)設(shè)計(jì)需要時(shí),我們才能“想到它們”。有趣的是,有些人可能看似博學(xué)多才,但在實(shí)際的架構(gòu)設(shè)計(jì)中卻很難將他們的知識(shí)運(yùn)用起來。

我個(gè)人不太喜歡常規(guī)意義上的 “設(shè)計(jì)模式”?;蛘哒f,我們對(duì)設(shè)計(jì)模式常規(guī)的打開方式是有問題的。理解每一個(gè)設(shè)計(jì)模式,都應(yīng)該放到它想要解決的問題域來看。所以,我個(gè)人更喜歡的架構(gòu)范式更多的是 “設(shè)計(jì)場(chǎng)景” 的總結(jié)?!霸O(shè)計(jì)場(chǎng)景” 和設(shè)計(jì)模式的區(qū)別在于它有自己清晰的問題域定義,是一個(gè)實(shí)實(shí)在在的通用子系統(tǒng)。

“開閉原則” 推崇模塊業(yè)務(wù) “只讀” 的思想,是很好的架構(gòu)治理哲學(xué)。它告訴我們,軟件是可以以 “搭積木” 的方式搭出來的。核心的一點(diǎn)是,我們?nèi)绾涡纬筛嗟?“積木”,即一個(gè)個(gè)業(yè)務(wù)只讀、接口穩(wěn)定、易于組合的模塊。


責(zé)任編輯:武曉燕 來源: 二進(jìn)制跳動(dòng)
相關(guān)推薦

2011-07-04 17:59:03

開閉原則

2023-07-09 15:24:05

架構(gòu)設(shè)計(jì)思想AKF

2022-09-27 09:21:34

SOLID開閉原則Go

2024-01-23 09:07:29

Unix哲學(xué)工具

2012-03-15 11:15:13

Java設(shè)計(jì)模式

2024-07-11 16:32:13

代碼Java

2011-09-01 11:27:27

數(shù)據(jù)庫調(diào)整開閉原則

2017-12-05 15:34:06

Unix操作系統(tǒng)編程

2017-12-11 10:24:08

ERP治理軟件

2012-07-20 09:51:56

贊揚(yáng)管理藝術(shù)管理

2024-12-09 08:18:33

2012-03-01 14:30:41

關(guān)鍵業(yè)務(wù)IT基礎(chǔ)架構(gòu)

2022-02-18 16:23:45

元宇宙元宇宙治理問題

2023-03-15 18:34:26

資源治理數(shù)據(jù)治理業(yè)務(wù)線

2009-07-17 17:25:31

敏捷開發(fā)

2022-07-13 09:47:15

微服務(wù)治理架構(gòu)師

2024-05-22 15:31:56

2011-07-13 10:12:56

SQL語句優(yōu)化操作符優(yōu)化

2021-04-09 15:08:49

數(shù)字化轉(zhuǎn)型數(shù)據(jù)IT

2023-12-10 22:00:47

STLC++編程
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)