A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨胜男 中级黑马   /  2014-6-7 21:59  /  1445 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

单例设计模式的原理是不是全是靠静态(static)实现的?

9 个回复

正序浏览
单例模式就是只向外提供一个本类对象的实例,那么第一步就是将构造函数私有化,禁止其他类创建本类实例对象,第二步,在本类内部创建一个本类实例对象。第三步,在本类内提供一个静态函数,返回上一步创建的实例对象。这个函数必须是静态的,如果是非静态,本类构造函数私有,其他类不能创建本类实例,又没有静态方法,那么其他类根本就不能创建本类的实例对象
回复 使用道具 举报

单例模式可以使用static实现,但是它存在的周期太长,一般最好不用,主要看想使用的生命周期
回复 使用道具 举报
cain 发表于 2014-6-7 22:30
还有 你要理解 单例是 为了解决什么

已知private,私人权限,只能在本类中访问.

谢谢               
回复 使用道具 举报
pray 高级黑马 2014-6-8 05:56:43
7#
单例模式可以使用static实现,也可以不由其实现,主要看想使用的生命周期
回复 使用道具 举报
首先你要明白static 是在什么时候初始化的,其设计意图是是什么,单例 就是我们运行的当前虚拟机中有且只有一个需要的对象,不存在重复。static 是给类静态成员变量使用的,属于类的属性,一般是一些常量之类的东西,从加载上来说对于类和对象之间,在类加载到内存时候静态成员变量就存在了,而对象还不存在,另外 静态方法只能调用静态方法和静态变量这个你也应该知道,如果全部搞成静态方法那么意味着其他成员变量都要是静态的,很不方便,如果一天不要单例了也不容易扩展,很麻烦。
回复 使用道具 举报
还有 你要理解 单例是 为了解决什么

已知private,私人权限,只能在本类中访问.
已知,静态static,静态方法和静态参数
------------------------------------------------------------------------------------

/*
设计模式:解决某一类问题最行之有效的方法
java中23中设计模式
单例设计模式:解决一个类在内存中只存在一个对象.

想要保证对象唯一.
1.为了避免其它程序过多建立该类对象.先控制禁止
其他程序建立对象.
2.还为了让其他程序程序可以访问到该类对象,只好在在
本类中自定一个对象.
3.为了方便其它程序对自定义对象的访问,可以对外提供
一些访问方式.

这三步怎么用代码体现呢.?
1,将构造函数私有化.不允许创建对象.
2,在类中创建一个本类对象.
3,提供一个方法,可以获取到该对象.

评分

参与人数 1技术分 +1 收起 理由
轻语。 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报 1 0
不是滴,整个类就提供一个 静态入口就可以了

public static Singleton getInstance()

想要调用单例中的 方法,直接写 getInstance().方法 就行
回复 使用道具 举报
单例模式可以使用static实现,也可以不由其实现,主要看想使用的生命周期
回复 使用道具 举报
单例设计模式用的是本类的构造方法私有化,只提供一个静态可以返回本类对象的方法来实现。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马