面向对象编程是基于”事物属性和方法有共性”的前提下才能最大化发挥其效用的。
如果一个系统中有共性的类不多,无法/没必要进行抽象,那就不适合使用这一编程模型。因为类实例化需要大量运算和内存。此时,使用面向过程的语言更合适。面向过程语言中所有方法都是静态的,无需实例化便可随意调用,占用内存和CPU时间更少。需要解决的问题是:
变量、方法的作用域问题并行时冲突的问题基类与子类实例变量数不同
对于问题1,在可信任的编程环境中不必考虑恶意篡改和调用;即使考虑,也可以使用语言提供的机制(闭包、返回函数、模块等)进行规避;对于问题2,可以考虑使用单线程语言(如js)或锁(语言提供或自己实现)进行规避;对于问题3,在面向过程编程中,设计方法时往往会保持纯函数特性,如果函数需要用到什么变量,通过函数参数定义传入,函数中间不引用任何实参以外的变量,因此便没有了成员变量的必要;在我的实践中,一个复杂的全量业务使用面向过程式nodejs实现时,运行时内存占用也不过20M,但一个简单业务的java实现会轻易就超过50M.
新闻热点
疑难解答