0
点赞
收藏
分享

微信扫一扫

编程思想演进


编程思想演进

  • ​​POP (Procedure Oriented Programming)​​
  • ​​OOP (Object Oriented Programming)​​
  • ​​AOP (Aspect Oriented Programming)​​
  • ​​AOP多种实现​​
  • ​​DDD (领域驱动设计)​​

POP (Procedure Oriented Programming)

POP面向过程就是分析出解决问题所需的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。考虑问题是从解决问题的步骤出发

优点:符合常规先行思想
缺点:难以应对复杂的业务,难以满足业务扩展需求

编程思想演进_Programming

OOP (Object Oriented Programming)

OOP面向对象编程,是按人们认识客观世界的系统思维方式,采用基于对象(实体)的概念建立模型,模拟客观世界分析、设计、实现软件的办法。考虑问题的方式是从对象出发。分治思想

思维历程:可以应对复杂的业务需求→因为聚沙成塔→不管做多复杂的系统,拆解→拆解→拆解,都是一个个类组装的→封装一个类→多个类交互完成小功能→多个功能叠加→模块→多个模块儿叠加→系统→平台。

OOP是一个非常伟大的程序设计思想,才有丰富复杂的各种业务系统

原理:其实在OOP的内部,依旧是POP的线性思想。OOP是程序设计,POP是内部实现

编程思想演进_动态代理_02

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)是一种基于模型驱动的软件设计方式。它以领域为核心,分析领域中的问题,通过建立一个领域模型来有效的解决领域中的核心的复杂问题。

说人话:就是划分领域(更上层、关系紧密)–>大盒子,其实就像类,但是编程语言没有这东西,所以就创造了一个领域(聚合根,可以包含多个对象)–>业务分析设计方法–>还诞生了很多方法论

编程思想演进_Programming_03


举报

相关推荐

0 条评论