黑马程序员技术交流社区

标题: 单例设计模式的实现 [打印本页]

作者: 杨胜男    时间: 2014-6-7 21:59
标题: 单例设计模式的实现
单例设计模式的原理是不是全是靠静态(static)实现的?


作者: GoodBoy123    时间: 2014-6-7 22:09
单例设计模式用的是本类的构造方法私有化,只提供一个静态可以返回本类对象的方法来实现。
作者: 成小龙    时间: 2014-6-7 22:13
单例模式可以使用static实现,也可以不由其实现,主要看想使用的生命周期
作者: cain    时间: 2014-6-7 22:28
不是滴,整个类就提供一个 静态入口就可以了

public static Singleton getInstance()

想要调用单例中的 方法,直接写 getInstance().方法 就行
作者: cain    时间: 2014-6-7 22:30
还有 你要理解 单例是 为了解决什么

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

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

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

这三步怎么用代码体现呢.?
1,将构造函数私有化.不允许创建对象.
2,在类中创建一个本类对象.
3,提供一个方法,可以获取到该对象.
作者: 尹稳定    时间: 2014-6-7 22:42
首先你要明白static 是在什么时候初始化的,其设计意图是是什么,单例 就是我们运行的当前虚拟机中有且只有一个需要的对象,不存在重复。static 是给类静态成员变量使用的,属于类的属性,一般是一些常量之类的东西,从加载上来说对于类和对象之间,在类加载到内存时候静态成员变量就存在了,而对象还不存在,另外 静态方法只能调用静态方法和静态变量这个你也应该知道,如果全部搞成静态方法那么意味着其他成员变量都要是静态的,很不方便,如果一天不要单例了也不容易扩展,很麻烦。
作者: pray    时间: 2014-6-8 05:56
单例模式可以使用static实现,也可以不由其实现,主要看想使用的生命周期
作者: 杨胜男    时间: 2014-6-8 09:11
cain 发表于 2014-6-7 22:30
还有 你要理解 单例是 为了解决什么

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

谢谢               
作者: 18353666072    时间: 2014-6-8 12:46

单例模式可以使用static实现,但是它存在的周期太长,一般最好不用,主要看想使用的生命周期
作者: 西门吹风    时间: 2014-6-8 18:10
单例模式就是只向外提供一个本类对象的实例,那么第一步就是将构造函数私有化,禁止其他类创建本类实例对象,第二步,在本类内部创建一个本类实例对象。第三步,在本类内提供一个静态函数,返回上一步创建的实例对象。这个函数必须是静态的,如果是非静态,本类构造函数私有,其他类不能创建本类实例,又没有静态方法,那么其他类根本就不能创建本类的实例对象




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2