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