关于单例模式(sington)200分

[复制链接]
查看11 | 回复5 | 2009-7-3 15:28:10 | 显示全部楼层 |阅读模式
其实这两种方法从性能上来说是没有多大区别的.因为private static Sington sin这个属性被static修饰,所以无论这个类被实例化多少个对象的引用,它们都共用一个Sington属性.也就是同一个对象.所以选择一开始初始化和客户端调用时初始化几乎是没有性能上的差别的.如果真要找出这两种方法的区别,那就是涉及到线程的问题了.1. private static Sington sin = new Sington();//这种形式是线程安全的.2. private static Sington=null; //这种形式是非线程安全的. 解释:1. 因为一开始该类就已经初始化了Sington,所以即使多...
回复

使用道具 举报

千问 | 2009-7-3 15:28:10 | 显示全部楼层
你好单例模式的设计宗旨是 确保类只有一个实例,并提供一个全局的访问点。那么 无论饿汉模式还是懒汉模式都是来为这个宗旨来服务的饿汉模式 是在类中把类的实例初始化好,等待被调用。如果是一些简单的类,不涉及复杂逻辑的单例模式建议用饿汉模式。懒汉模式 则是不实例化类的实例,如果有人调用,再进行初化。如果类中涉及复杂逻辑,建议用懒汉模式...
回复

使用道具 举报

千问 | 2009-7-3 15:28:10 | 显示全部楼层
呵呵,你现在的测试对象占用内存小你才会觉得没区别,我就这么说吧:经常我们打开某些程序的时候(比如eclipse)它会很慢,于是我们会不爽,为何不能快点呢。。。假如的你程序中有许多功能是选中生效的,那么这时这些功能就没有必要在程序刚运行时就加载。。。以免占用过多的系统运行时间和内存,则使用懒汉模式来完成延时加载...
回复

使用道具 举报

千问 | 2009-7-3 15:28:10 | 显示全部楼层
饿汉模式初始化是在第一次加载类时被创建;懒汉式在第一次调用getInstance()方法是被创建。getInstance()方法在单例模式中的作用是得到对象的实例而不是创建对象,只不过在懒汉模式下第一次调用时实例化对象,往后的作用也都是得到实例而不是创建实例。...
回复

使用道具 举报

千问 | 2009-7-3 15:28:10 | 显示全部楼层
饿汉模式的初始化发生在这个类被第一次调用的时候,不一定是被初始化,只要这个类被加载了就其中的静态变量就会被加载。比如在加载数据库驱动的时候,用Class.forName就是这个意思,只是加载而已就足够了。饿汉是一加载就把静态变量初始化了,而懒汉是在给实例初始化的时候去生成静态对象的...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行