`
xihongshi414
  • 浏览: 34786 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
最近访客 更多访客>>
社区版块
存档分类
最新评论

OO——创建对象

阅读更多

摘自J道banq:

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

为什么说这些程序员完全不懂OO呢?
因为他们只知道对象两个表面含义,却不懂对象背后的含义,对象重要特征是什么?对象重要的特征就是有生命的,有scope的,有生命周期的,这其实是一个很朴素的哲学思想,没有永垂不朽的东西,任何物体都是有生命的。既然,对象有生命,那就当然有生有死,在java中,对象什么时候死已经无需我们操心,因为有垃圾回收机制,我们程序员只要决定对象什么时候生就可以,也就是对象什么时候创建,以何种方式创建。
      对象可以new方式创建,也可以使用创建模式创建,方式很多,Ioc模式的诞生,特别是自动配对auto wiring的IOC诞生,让对象的创建也无需我们来编码了,这更大大解决程序员的软件开发生产力,这也就是Jdon On Rails为什么快速的原因之一。
      回到对象的生命周期上来,使用静态实际就是变态的延长对象的生命周期,虽然也解放了程序员,无需程序员照顾对象创建,但是这是一种错误的解放,是一种虽然简单,但是方向完全错误,可能导致更大性能陷阱的解决方式,这个我已经在单例是邪恶等帖子中反复表述,因为我们现在的软件是一个多线程环境,如果你使用静态,不但导致非OO系统,到处是长命百岁的对象,系统难于维护;更重要不小心就导致多线程变成单线程系统,也就是单用户系统,某个时刻只能一个用户操作这个系统。换句话说:就是系统缓慢,人操作一多就死机。

 

    对于JAVA的底层有N多没有掌握。关于线程也是么子都不知道呢!

 

分享到:
评论

相关推荐

    写给大家看的面向对象编程书(第3版).[美]Matt Weisfeld(带详细书签).pdf

    第10章 用UML创建对象模型 154 10.1 什么是UML 154 10.2 类图的结构 155 10.3 属性和方法 156 10.3.1 属性 156 10.3.2 方法 157 10.4 访问指示 157 10.5 继承 158 10.6 接口 159 10.7 组合 160 10.7.1 ...

    Java语言程序设计的课程设计项目——利用Java实现地球系动画完整实现实例(第3部分).pdf

    (3)Java 中的动态数组——其实为 Java 中的集合类 为什么要应用静态数组而不使用 Java 中的集合类(如 ArrayList 等)产生动态数组?主要 是考虑到效率和类型两方面的问题。 1) 效率: 要想保存和随机访问一系列...

    UML和模式应用(原书第3版)

     《UML和模式应用(原书第3版)》介绍了“对象思想”,并在实际的面向对象分析和设计中应用了这一思想,即如何以对象进行思考和设计,以及如何创建精致、健壮和可维护的系统。 开发者和学生可以通过贯穿全书的两个...

    java web 开发详解

    Java 的 Web框架虽然各不... 优点: 对Java开发者有利(不是Web开发者) 页面和显示绑定紧密 社区活跃——有来自创建者的支持 缺点: HTML模板和Java代码紧挨着 需要对OO有较好的理解 Wicket逻辑——什么都用Java搞定

    【JavaScript源代码】Javascript生成器(Generator)的介绍与使用.docx

    Javascript生成器(Generator)的介绍与使用  生成器是在函数内部运行的一些代码  返回值后,它会自行暂停,并且—— ... 调用该函数创建一个生成器对象 在循环中使用该生成器对象,或直接调用其

    Introductory-Java:来自 UNC 的 COMP 401 的编码作业,2014 年Spring

    在一帧中的像素上创建两个迭代器——一个逐行,一个之字形对角线穿过像素阵列。 对象、接口、集合、迭代器 作业 4:以作业 3 为基础。比较像素帧。 将 RGB 颜色帧分成三帧,一帧为 R 像素值,一帧为 B 像素值,一帧...

    asp.net知识库

    动态调用对象的属性和方法——性能和灵活性兼备的方法 消除由try/catch语句带来的warning 微软的应试题完整版(附答案) 一个时间转换的问题,顺便谈谈搜索技巧 .net中的正则表达式使用高级技巧 (一) C#静态成员和...

    实例解析C#设计模式编程中简单工厂模式的使用

    当需求变化时,我们就不得不去修改此类的源码,此时我们可以运用面向对象(OO)的很重要的原则去解决这一的问题,该原则就是——封装改变,既然要封装改变,自然也就要找到改变的代码,然后把改变的代码用类来封装,...

    【JavaScript源代码】Vue.set()和this.$set()使用和区别.docx

    当我们去看vue文档的时候,会发现有这么一句话:如果在实例创建之后添加新的属性到实例上,它不会触发视图更新。 如下代码,给 student对象新增 age 属性  data () { return { student: { name: '', sex: '' ...

    领域驱动设计与模式实战

    10.1.6 为什么对领域模型——SO分区 10.2 SOA简介 10.2.1 什么是SOA 10.2.2 为什么需要SOA 10.2.3 SOA有什么不同 10.2.4 什么是服务 10.2.5 服务中包括什么 10.2.6 深入分析4条原则 10.2.7 再来看一下什么是服务 ...

    外文翻译 stus MVC

    Struts——an open-source MVC implementation This article introduces Struts, a Model-View-Controller implementation that uses servlets and JavaServer Pages (JSP) technology. Struts can help you control...

    Spring.3.x企业应用开发实战(完整版).part2

    16.3.2 创建Mock对象 16.3.3 设定Mock对象的期望行为及返回值 16.3.4 验证交互行为 16.4 测试整合之王Unitils 16.4.1 Unitils概述 16.4.2 集成Spring 16.4.3 集成Hibernate 16.4.4 集成Dbunit 16.4.5 自定义扩展模块...

    Spring3.x企业应用开发实战(完整版) part1

    16.3.2 创建Mock对象 16.3.3 设定Mock对象的期望行为及返回值 16.3.4 验证交互行为 16.4 测试整合之王Unitils 16.4.1 Unitils概述 16.4.2 集成Spring 16.4.3 集成Hibernate 16.4.4 集成Dbunit 16.4.5 自定义扩展模块...

Global site tag (gtag.js) - Google Analytics