编程思想演进
編程思想演進
- POP (Procedure Oriented Programming)
- OOP (Object Oriented Programming)
- AOP (Aspect Oriented Programming)
- AOP多種實現(xiàn)
- DDD (領(lǐng)域驅(qū)動設(shè)計)
POP (Procedure Oriented Programming)
POP面向過程就是分析出解決問題所需的步驟,然后用函數(shù)把這些步驟一步一步實現(xiàn),使用的時候一個一個依次調(diào)用就可以了??紤]問題是從解決問題的步驟出發(fā)
優(yōu)點:符合常規(guī)先行思想
缺點:難以應(yīng)對復(fù)雜的業(yè)務(wù),難以滿足業(yè)務(wù)擴展需求
OOP (Object Oriented Programming)
OOP面向?qū)ο缶幊?#xff0c;是按人們認識客觀世界的系統(tǒng)思維方式,采用基于對象(實體)的概念建立模型,模擬客觀世界分析、設(shè)計、實現(xiàn)軟件的辦法。考慮問題的方式是從對象出發(fā)。分治思想
思維歷程:可以應(yīng)對復(fù)雜的業(yè)務(wù)需求→因為聚沙成塔→不管做多復(fù)雜的系統(tǒng),拆解→拆解→拆解,都是一個個類組裝的→封裝一個類→多個類交互完成小功能→多個功能疊加→模塊→多個模塊兒疊加→系統(tǒng)→平臺。
OOP是一個非常偉大的程序設(shè)計思想,才有豐富復(fù)雜的各種業(yè)務(wù)系統(tǒng)
原理:其實在OOP的內(nèi)部,依舊是POP的線性思想。OOP是程序設(shè)計,POP是內(nèi)部實現(xiàn)
AOP (Aspect Oriented Programming)
AOP面向切面編程:通過預(yù)編譯方式和運行期間動態(tài)代理實現(xiàn)程序功能的統(tǒng)一維護的一種技術(shù)。AOP是OOP的延續(xù)。
說人話:解決面向?qū)ο笳Z言的靜態(tài)問題,能突破類的限制,去動態(tài)擴展類的功能。既不破壞封裝,又能額外增加功能。
優(yōu)點:任意擴展功能,聚焦業(yè)務(wù)邏輯。代碼復(fù)用,集中管理,方便團隊管理
AOP多種實現(xiàn)
- 靜態(tài)代理:代理模式、裝飾器模式
- 動態(tài)代理:.NET Core 靠反射代理,以前RealProxy、Castle(靠emit)
- 靜態(tài)織入:PostSharp(收費)、Aspect
- 委托嵌套:ASP.NET Core 管道中間件
- 特性+反射:ASP.NET Core 的 Filter
- IOC容器:Autofec、Unity等,基于動態(tài)代理或者emit完成
之后會試著把AOP的幾種實現(xiàn)方式寫出來,做一個深入的理解。
DDD (領(lǐng)域驅(qū)動設(shè)計)
領(lǐng)域驅(qū)動設(shè)計(DDD)是一種基于模型驅(qū)動的軟件設(shè)計方式。它以領(lǐng)域為核心,分析領(lǐng)域中的問題,通過建立一個領(lǐng)域模型來有效的解決領(lǐng)域中的核心的復(fù)雜問題。
說人話:就是劃分領(lǐng)域(更上層、關(guān)系緊密)–>大盒子,其實就像類,但是編程語言沒有這東西,所以就創(chuàng)造了一個領(lǐng)域(聚合根,可以包含多個對象)–>業(yè)務(wù)分析設(shè)計方法–>還誕生了很多方法論
總結(jié)
- 上一篇: mybatis 多租户saas_彻底理解
- 下一篇: 深度学习修炼(二)——数据集的加载