单例模式(单子模式)
来源:互联网 发布:剑三正太捏脸数据网盘 编辑:程序博客网 时间:2024/04/19 23:19
1.什么是单例模式?
在我们的Java应用程序中,随着应用程序的运行会创建出很多对象。但有时候我们希望在创建某类对象时,无论创建多少次该类对象只有一份在内存中。这就是单例模式。如果我们要实现单例模式首先要保证构造函数私有化,即不允许用户随意调用我本类的构造函数,因为只要通过new操作创建对象,必定要在堆中开辟空间,这样就无法实现单例了。
2.单例类和单例模式的特点?
单例类有如下特点:
§ 单例类只有一个实例。
§ 单例类自行创建并提供这个唯一的实例。
单例模式有以下的特点:
§ 单例类只能有一个实例。
§ 单例类必须自己创建自己的惟一的实例。
§ 单例类必须给所有其他对象提供这一实例。
3.单例模式的实现
第一种实现方式:
- /**
- * 单例模式(饿汉式单例类) 从速度和反应时间角度来讲,饿汉式单例类稍好
- * @author Administrator
- *
- */
- public class Singleton {
- private static Singleton singleton = new Singleton();
- private String value;
- //构造方法要私有
- private Singleton(){
- }
- //提供一个对外的方法
- public static Singleton getSingleton(){
- return singleton;
- }
- public String getValue() {
- return value;
- }
- public void setValue(String value) {
- this.value = value;
- }
- }
第二种实现方法:
- /**
- * 单例模式(懒汉式单例类) 单从资源利用效率角度来讲, 懒汉式单例类好些
- * @author Administrator
- *
- */
- public class Singleton2 {
- private static Singleton2 singleton = null;
- private String value;
- //构造方法要私有
- private Singleton2(){
- }
- //提供一个对外的方法
- public static Singleton2 getInstance(){
- if(singleton == null){
- singleton = new Singleton2();
- }
- return singleton;
- }
- public String getValue() {
- return value;
- }
- public void setValue(String value) {
- this.value = value;
- }
- }
4.测试类
- public class Test {
- public static void main(String[] args) {
- Singleton s1 = Singleton.getSingleton();
- Singleton2 s2 = Singleton2.getInstance();
- System.out.println(s1.equals(s2));
- s1.setValue("100");
- s2.setValue("200");
- System.out.println(s1.getValue());
- }
- }
转载自:http://www.cnblogs.com/qinqinmeiren/archive/2011/07/14/2151691.html
- 单例模式(单子模式)
- 单例模式(单子模式)
- 单子模式
- 单子模式
- 单子设计模式
- 单子设计模式
- Singleton单子模式
- 单子模式 简介
- 单子设计模式
- Java单子模式
- 模式四(单子模式)
- 设计模式---单子(Singleton)
- 单子(Singleton)设计模式
- 仿照单子模式的测试
- 单子(Singleton)设计模式
- oracle数据库连接 单子模式详解
- 单子设计模式(Singleton Pattern)
- 2010.02.23 设计模式之单子模式
- C++中 int i 与 int &i 注意事项
- 排序算法的稳定性
- 去掉Html textarea 标签前面显示空格
- Java并发编程实战~笔记~章三
- Linux(Ubuntu)系统各个目录的作用详解(整合)
- 单例模式(单子模式)
- ida静态分析/破解某软件的 时间限制
- 2013年--java笔试---3
- PLSQL开发笔记和小结
- Linux 邮件发送
- XML布局引起的ClassCastException
- base64编码解码封装API简单代码示例
- csu 1067 1vs1
- JavaWeb_jsp_简单计算器(jsp+javaBean模式)