java中new与static分析

news/2024/7/24 13:26:15

抱怨java的new浪费了太多的内存,应该大量的使用static
前半句在某些情况下正确,后半句绝对错误。

说这话的是完全不懂对象,完全没有OO基础知识,但是这些人还在从事Java/.NET等OO软件开发,相当于外行人冒充内行,可见当前中国软件业水平多么低下。

为什么说这些程序员完全不懂OO呢?
因为他们只知道对象两个表面含义,却不懂对象背后的含义,对象重要特征是什么?对象重要的特征就是有生命的,有scope的,有生命周期的,这其实是一个很朴素的哲学思想,没有永垂不朽的东西,任何物体都是有生命的。

既然,对象有生命,那就当然有生有死,在java中,对象什么时候死已经无需我们操心,因为有垃圾回收机制,我们程序员只要决定对象什么时候生就可以,也就是对象什么时候创建,以何种方式创建。

对象可以new方式创建,也可以使用创建模式创建,方式很多,Ioc模式的诞生,特别是自动配对auto wiring的Ioc诞生,让对象的创建也无需我们来编码了,这更大大解决程序员的软件开发生产力,这也就是Jdon On Rails为什么快速的原因之一。

回到对象的生命周期上来,使用静态实际就是变态的延长对象的生命周期,虽然也解放了程序员,无需程序员照顾对象创建,但是这是一种错误的解放,是一种虽然简单,但是方向完全错误,可能导致更大性能陷阱的解决方式,这个我已经在单例是邪恶等帖子中反复表述,因为我们现在的软件是一个多线程环境,如果你使用静态,不但导致非OO系统,到处是长命百岁的对象,系统难于维护;更重要不小心就导致多线程变成单线程系统,也就是单用户系统,某个时刻只能一个用户操作这个系统。换句话说:就是系统缓慢,人操作一多就死机。


http://www.niftyadmin.cn/n/1250873.html

相关文章

为什么说移动端该放弃rem适配方案了?

作者:去伪存真https://juejin.cn/post/70849266460330557521.背景在做移动端各种尺寸屏幕的适配时,用的最多的就是rem方案。我们都写过这样的代码,来设置根字体大小。这个计算公式中设备宽度,UI设计稿尺寸这两个参数比较好理解,可…

如何使用 IntelliJ IDEA中配置PHP开发环境 及项目搭建

首先我们这里使用WANPServer WampServer是一款由法国人开发的Apache Web服务器、PHP解释器以及MySQL数据库的整合软件包。免去了开发人员将时间花费在繁琐的配置环境过程,从而腾出更多精力去做开发。 WampServer就是Windows Apache Mysql PHP集成安装环境&#xf…

过度使用懒加载的弊端

懒加载的过度使用会给应用性能带来负面影响。所以在这篇文章中,会详述懒加载对性能的影响,来帮助你理解应该何时使用它。什么是懒加载?懒加载是一种常见的技术,通过按需加载资源来减少网页的数据使用。如今懒加载已经是一种 Web 标…

IntelliJ IDEA中用谷歌浏览器打开页面,出现windows 找不到文件chrome

1.右击谷歌浏览器快捷方式打开文件位置。如: 2. 打开IntelliJ IDEA软件,找到file–>settings–>找到Web Browsers。 3.在chrome那一栏最右边的path中选择chrome.exe文件就可以了 4、点击应用和保存,然后再次点击chrome按钮,就可以啦&…

现在面试都问什么「字节、蚂蚁、美团、滴滴面试小记」

写在前面笔者三年工作经验,平时工作上也会技术面试一些候选人,听江湖上传闻三年是个坎,目前刚好也有三年没有出来面试了,想出来考验考验自身功底如何?🙃主要投递了一些可视化与基础设施建设相关方向的职位&…

java学习之静态代理

一、概述 代理是一种模式,提供了对目标对象的间接访问方式,即通过代理访问目标对象。如此便于在目标实现的基础上增加额外的功能操作,前拦截,后拦截等,以满足自身的业务需求,同时代理模式便于扩展目标对象…

localStorage 的高阶用法

很多人在用 localStorage 或 sessionStorage 的时候喜欢直接用,明文存储,直接将信息暴露在;浏览器中,虽然一般场景下都能应付得了且简单粗暴,但特殊需求情况下,比如设置定时功能,就不能实现。就…

java学习之动态代理

动态代理:应用程序发布后,通过动态创建代理对象;动态代理可以动态地创建代理并动态地处理对所代理方法的调用。 其中动态代理又可分为: 一、JDK原生动态代理 二、CGLIB动态代理 1.JDK原生动态代理 JDK动态代理只能针对实现了接口的类生成…