编程范式

编程范式

编程范式指编程时所采用的思想和风格,不同编程语言对不同的编程范式会有不同程度的支持。

OPP

面向过程编程(Procedure Oriented Programming, OPP)考虑的实际的实现过程,其主要思想是:通过分析问题将问题拆分为不同的步骤,然后通过函数实现每一个步骤,最后按顺序组合到一起。

  • OPP 主要关注怎么做,侧重于解决问题的具体过程,实现的具体细节
  • OOP 的代码流程比较清晰
  • 当程序规模变大时,OOP 容易变得难以维护

OOP

面向对象编程(Object Oriented Programming, OOP)从问题中抽象不同的对象出来解决更具体更细的问题,然后组合这些对象来解决问题;相比 OPP,OOP 更关注完成的对象。

OOP 的三要素:

  • 封装

    封装的意义在于对内部实现进行抽象,对外提供完整且最小的数据和方法,并使得内部细节对外透明;调用者只需关注如何使用才能得到自己想要的功能,无需关注其内部实现,调用者与被调用者各司其职

  • 继承

    继承有两种含义:

    • 类继承

      子类继承父(基)类,并做相应的扩展

    • 接口继承

      接口继承要求对接口进行抽象,提供一个兼容接口

  • 多态

    多态和继承必须一起说,多态是基于对象所属类不同,对于同一方法的调用,执行的逻辑不同。多态一般通过覆盖或者重载实现。

    • 覆盖:子类重新定义父类的方法
    • 重载:多个同名但参数不同的方法

AOP

面向切面编程(Aspect-Oriented Programming, AOP),基于 OOP 延伸出来的编程思想。相对 OOP,AOP 在主业务逻辑中横向注入其他业务逻辑(如:日志、埋点等),将主业务逻辑与其他业务逻辑进行分离,降低耦合度。

  • AOP 是对 OOP 的补充,
  • 装饰器模式、代理模式也是基于 AOP 思想的设计模式

总结

每个编程范式都有各自的优势,适用场景不一样,没有绝对好坏之分。

面向过程性能高,面向对象比较易于管理和维护,面向切面使程序变得更灵活