对于单例的学习总结,包括懒汉式和饿汉式的区别,比较浅显,可能有不足,希望大家多多指教。
2014-12-22 00:49
417 查看
单例设计模式:解决一个类在内存中只存在一个对象。
因为如果两个程序操作一个文件,都要new一个对象,故两个程序不能操作同一个对象,故不能保证对象的唯一性。
如何保证对象的唯一性?
1.为了避免其他层序过多建立该类的对象。先禁止其他程序建立该类对象。
体现:将构造函数私有化化
2.还为了让其他程序访问该对象,只好在本类中,自定义一个对象。
体现:在类中创建一个本类对象。
3.为了方便其他程序对自定义对象的访问,可以对外提供一些访问反方式
体现:提供一个方法可以获取到该对象。
程序步骤如下:
class Single
{
//构造一个函数,并将其私有化。
private Single(){}
//创建一个本类对象
Single s=new Single();
//提供一个公有方法访问这个对象
public Single getInstance()
{
return s;
}
}
方法调用调用:要么用对象;要么用类名。类名调用必须静态
由于对象已经固定,没有对象了,故要用类名调用,
Class Single
{
private Single(){}
private static Single s=new Single();
public static Single getInstance()
{
return s;
}
}
class SingleDemo
{
public static void main(String[] args)
{
Single ss=Single.getInstance();
}
}
对于事物的描述该怎么描述,还是怎么描述。
当需要将事物的对象保证在内存中的唯一性时,
就将以上散步加上即可。
饿汉式:先初始化,
Class Single
{
private static Single s=new Single();
private Single(){}
public static Single getInstance()
{
return s;
}
}
懒汉式:后初始化,对象调用时才初始化。
Class Single
{
private static Single s=null;
private Single(){}
public static Single getInstance()
{
if(s==null)
s=new Single();
return s;
}
}
饿汉式:Single类已加载,方法区中就有了s,堆里面就有对象了。
懒汉式:Single类加载时,方法区中的s为null。只有调用对象时,才会建立对象
也称为延时加载。
也可以这样理解,饿汉式:它饿就会想去吃,故先加载对象
懒汉式:它很懒,都不想动,所以当别人催它的时候,即有人调用对象时,它才会去加载对象。
因为如果两个程序操作一个文件,都要new一个对象,故两个程序不能操作同一个对象,故不能保证对象的唯一性。
如何保证对象的唯一性?
1.为了避免其他层序过多建立该类的对象。先禁止其他程序建立该类对象。
体现:将构造函数私有化化
2.还为了让其他程序访问该对象,只好在本类中,自定义一个对象。
体现:在类中创建一个本类对象。
3.为了方便其他程序对自定义对象的访问,可以对外提供一些访问反方式
体现:提供一个方法可以获取到该对象。
程序步骤如下:
class Single
{
//构造一个函数,并将其私有化。
private Single(){}
//创建一个本类对象
Single s=new Single();
//提供一个公有方法访问这个对象
public Single getInstance()
{
return s;
}
}
方法调用调用:要么用对象;要么用类名。类名调用必须静态
由于对象已经固定,没有对象了,故要用类名调用,
Class Single
{
private Single(){}
private static Single s=new Single();
public static Single getInstance()
{
return s;
}
}
class SingleDemo
{
public static void main(String[] args)
{
Single ss=Single.getInstance();
}
}
对于事物的描述该怎么描述,还是怎么描述。
当需要将事物的对象保证在内存中的唯一性时,
就将以上散步加上即可。
饿汉式:先初始化,
Class Single
{
private static Single s=new Single();
private Single(){}
public static Single getInstance()
{
return s;
}
}
懒汉式:后初始化,对象调用时才初始化。
Class Single
{
private static Single s=null;
private Single(){}
public static Single getInstance()
{
if(s==null)
s=new Single();
return s;
}
}
饿汉式:Single类已加载,方法区中就有了s,堆里面就有对象了。
懒汉式:Single类加载时,方法区中的s为null。只有调用对象时,才会建立对象
也称为延时加载。
也可以这样理解,饿汉式:它饿就会想去吃,故先加载对象
懒汉式:它很懒,都不想动,所以当别人催它的时候,即有人调用对象时,它才会去加载对象。
相关文章推荐
- 登录次数验证,可能还是有些不足的,希望大家指正
- 妹纸比较菜,平时总结的网址,分享给大家,希望对你们有用!
- 今天 发现了 一个 推酷 站,总结了些知识,希望大家学习
- 新人刚开始学习java总结一下StringBuffer和StringBuilder的区别及一些知识,不对的地方还望大家指出让我早日改正
- 对于SQL的Join,在学习起来可能是比较乱的。我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对于Select出来的结果集是什么样子有点不是很清楚。Coding Horror上有一篇文章,通过文氏图 Venn diagrams 解释了SQL的Join。我觉得清楚易懂,转过来。 交差集" cross join 《Linux命令行与shell脚本编程大全
- 第一次来写博客,做一些学习中的总结,希望大家可以支持
- 一只Linux小白,啊哈哈。。。以后就将自己的学习心得与大家分享啦!希望大家可以指出我的错误与不足之处
- Java学习总结12——Java NIO与IO的区别和比较
- 有没有安全的工作?(99条评论)——结论是没有一劳永逸的工作,要终身学习,IT业刚出道和老手还是有区别的(同样对于新技术,薪资可能是个问题)
- 总结html中的一些标签的区别,希望有不全的大家指出
- GREP 刚刚学习,不对不足之处,希望大家指教批评,虚心接受
- 关于RDLC报表的一些总结,希望对正在学习使用它的朋友有所帮助
- 关系数据库的查询优化策略----总结了一些查询优化的方法,希望可以对大家有所帮助
- HTMLParser(一个比较流行的html代码解析、处理开源项目)学习,总结
- 开始学习C和java了,希望大家提供帮助
- ASInsHelp 服务加载失败的可能原因以及解决办法,希望对大家有帮助.
- VC++中对于处理消息的学习总结
- 大家好!我刚开始学习.net希望大家多指教!
- linux学习使用总结-linux系统的安装和与windows双系统共享,linux常用的基本命令,今天贴在这里和大家分享
- 准备学习JQuery,希望大家给些学习方法