Singleton模式可以是很简单的,它的全部只需要一个类就可以完成(看看这章可怜的UML图)。但是如果在“对象创建的次数以及何时被创建”这两点上较真起来,Singleton模式可以相当的复杂,比头五种模式加起来还复杂,譬如涉及到DCL双锁检测(double checked locking)的讨论、涉及到多个类加载器(ClassLoader)协同时、涉及到跨JVM(集群、远程EJB等)时、涉及到单例对象被销毁后重建等。对于复杂的情况,本章中会涉及到其中一些[1]...
分类:
其他好文 时间:
2014-08-23 17:47:51
阅读次数:
327
1 单例(Singleton)模式:单例模式确保某一个类只有一个 实例,而且该类只能是自己 实例化自己并向其他类公开 这个实例的对象创建 模式 采用单例模式的类:根据单例模式知道其要满足以下三点 1. 确保某一个类只有一个实例 2. 而且自己实例化 3. 并向其他类提供这个实例类 。 2 确保以上三...
分类:
编程语言 时间:
2014-08-22 00:02:55
阅读次数:
256
javascript中的with。with用来代替重复的书写部分。例子with语句可以方便地用来引用某个特定对象中已有的属性,但是不能用来给对象添加属性。要给对象创建新的属性,必须明确地引用该对象。 2)语法格式 with(objectinstance) { //代码块 } 有时候,我在一个程序代码...
分类:
其他好文 时间:
2014-08-21 22:24:04
阅读次数:
224
模式分类:从目的来看:1.创建型(Creational)模式:负责对象创建。2.结构型(Structural)模式:处理类于对象间的组合。3.行为型(Behavioral)模式:类与对象交互中的职责分配。从范围看:1.类模式处理类于子类的静态关系。2.对象模式处理对象间的动态关系。动机在软件系统中,...
分类:
其他好文 时间:
2014-08-19 23:48:05
阅读次数:
326
内存中对象的创建、对象的结构以及访问方式。
一、对象的创建
在语言层面上,对象的创建只不过是一个new关键字而已,那么在虚拟机中又是一个怎样的过程呢?
(一)判断类是否加载。虚拟机遇到一条new指令的时候,首先会检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号代表的类是否被加载、解析并初始化。如果没有完成这个过程,则必须执行相应类的加载。
(二)在堆上...
分类:
编程语言 时间:
2014-08-17 20:00:52
阅读次数:
196
Mark-Compact 标记压缩算法代托管代码/非托管代码弱引用(Weak References弱引用(weak reference)可以保持对对象的引用,同时允许垃圾收集器在它认为适当的垃圾收集时间释放对象,回收内存。假设有一个对象创建相对便宜,但需耗费大量的内存,如果希望保持这个对象,在应用程...
分类:
Web程序 时间:
2014-08-17 15:33:32
阅读次数:
288
创建类的构造方法有两种:1、在类里声明一个与类名相同的方法名(PHP4,不推荐用)。2、声明一个__construct()方法。因为构造方法在对象创建完成后会自动调用,所以用构造方法来将类的成员属性初始化(赋值);class Person{ var $name; var $age; var $...
分类:
其他好文 时间:
2014-08-17 14:14:12
阅读次数:
209
特殊工具与技术--优化内存分配[续2] 七.一个内存分配器基类 预先分配一块原始内存来保存未构造的对象,创建新元素的时候,可以在一个预先分配的对象中构造;释放元素的时候,将它们放回预先分配对象的块中,而不是将内存实际返还给系统。这种策略常被称为维持一个自由列表。可以将自由列表实现为已分配但未构造的对象的链表。 我们将定义一个名为 CachedObj 的新类来处理自由列表。像 QueueItem ...
分类:
编程语言 时间:
2014-08-15 19:39:29
阅读次数:
361
<spanstyle="font-size:18px;">//1.创建日期对象//创建的NSDate对象,获得的永远是0时区时间,如果要是求东八区时间,就加8个小时NSDate*date=[NSDatedate];NSLog(@"%@",date);//创建明天此时的日期(时间间隔都是以秒为单位计算的)NSDate*tomorrow=[NSDatedateWithTimeInter..
分类:
其他好文 时间:
2014-08-15 02:56:57
阅读次数:
280
32位Delphi程序中可利用TRegistry对象来存取注册表文件中的信息。 一、创建和释放TRegistry对象 1.创建TRegistry对象。为了操作注册表,要创建一个TRegistry对象:ARegistry := TRegistry.Create; 2.释放TRegistry对象。...
分类:
其他好文 时间:
2014-08-13 18:27:17
阅读次数:
227