谈面向对象编程的可替代性

面向对象编程是基于”事物属性和方法有共性”的前提下才能最大化发挥其效用的。

如果一个系统中有共性的类不多,无法/没必要进行抽象,那就不适合使用这一编程模型。因为类实例化需要大量运算和内存。此时,使用面向过程的语言更合适。面向过程语言中所有方法都是静态的,无需实例化便可随意调用,占用内存和CPU时间更少。需要解决的问题是:

  1. 变量、方法的作用域问题
  2. 并行时冲突的问题
  3. 基类与子类实例变量数不同

    • 对于问题1,在可信任的编程环境中不必考虑恶意篡改和调用;即使考虑,也可以使用语言提供的机制(闭包、返回函数、模块等)进行规避;
    • 对于问题2,可以考虑使用单线程语言(如js)或锁(语言提供或自己实现)进行规避;
    • 对于问题3,在面向过程编程中,设计方法时往往会保持纯函数特性,如果函数需要用到什么变量,通过函数参数定义传入,函数中间不引用任何实参以外的变量,因此便没有了成员变量的必要;

在我的实践中,一个复杂的全量业务使用面向过程式nodejs实现时,运行时内存占用也不过20M,但一个简单业务的java实现会轻易就超过50M.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值