`
wasw100
  • 浏览: 125908 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java设计模式--单例模式 的简单例子

    博客分类:
  • java
阅读更多

问题域:
 --系统中你需要获得某个类的唯一实例,所有客户端对它的访问都将通过一个公共的访问点获得
 --创建一个类并使其:(A)定义一个私有的构造器(B)定义一个私有、静态的变量指向自己(C)定义一个公有、静态的访问方法用于返回该类的一个唯一实例

 

分为 饿汉式懒汉式,下面是一个简单的示例代码,应该很容易理解:

package pattern.singleton.basic;

/**
 * java设计模式:单例模式(饿汉式)
 * @author wasw100
 */
public class Singleton {
	// 提供一个静态私有变量指向自己,属于类
	private static Singleton instance = new Singleton();// 提前消费
	// 提供私有构造器,只有在当前类中可以使用new,外界不能构造该类的对象
	private Singleton() {
	}

	// 对外提供一个公共访问点
	public static Singleton getInstance() {
		return instance;
	}
}

 

package pattern.singleton.basic;

/**
 * java设计模式:单例模式(懒汉式)
 * @author wasw100
 */
public class Singleton {
	private static Singleton instance = null;
	private Singleton(){}
	
	//synchronized避免在访问量比较大的时候 第一个线程的new Singleton还没来得及赋值给instance,第二个线程就来了,还要进行new ……
	public synchronized static Singleton getInstance(){
		if(instance == null){
			instance = new Singleton();
		}
		return instance;
	}
}

 

package pattern.singleton.basic;

public class ClientClass {

	public static void main(String [] args){
		Singleton s1 = Singleton.getInstance();
		Singleton s2 = Singleton.getInstance();
		System.out.println(s1);
		System.out.println(s2);
	}
}

输出结果(地址相同,所以指向同一个对象):
pattern.singleton.basic.Singleton@a90653
pattern.singleton.basic.Singleton@a90653

  

说明:

  • 构造方法是私有的,外部类不能实例化,只能在类的内部实例化
  • 饿汉式在类加载时实例化,懒汉式在第一次程序第一次执行getInstance()方法时实例化
  • 懒汉式中synchronized避免在访问量比较大的时候 第一个线程的new Singleton还没来得及赋值给instance,第二个线程就来了,还要进行new ……

 

 

分享到:
评论

相关推荐

    设计模式--单例模式java例子

    设计模式--单例模式java例子

    java设计模式之单例模式

    java设计模式之单例模式,通过例子说明8种单例设计模式。

    java设计模式之单例模式详解

    java设计模式之单例模式详解,包含例子,详解。

    Java常用设计模式例子

    以JAVA为例,汇总了十几种常用的设计模式,包括了:单例模式、工厂模式、建造者模式、适配器模式、装饰器模式、外观模式、命令模式、观察者模式、状态模式、策略模式、模板方法模式等。仅供学习使用。 相关文章请看...

    23种设计模式的java源代码

    里面包含了23中设计模式源代码,其中包括工厂模式(Factory)、单例(Singleton)、观察者...这些代码对于初学者看起来稍微复杂一些,我还有一个简易版的代码,标题为(23种设计模式的java源代码----容易理解的源代码)

    单例模式源码java-DesignPattern:在个人自学阶段的23种设计模式代码的全部实现,全部使用Java编写,其中还包括各个设计模式在

    在个人自学阶段的23种设计模式代码的全部实现,全部使用Java编写,其中还包括各个设计模式在源码中的使用,每种设计模式都举了一个简单的小例子来进行实现,并加以注释 包名解释 一、DesignPattern 1.1 创建型模式 ...

    java-单例模式几种写法

    自己总结的6中单例模式的写法,也有测试类,可以试验下,自己稍微修改一下后,验证安全性,纯粹为学习,建议可提

    体系结构学习代码!特别详细丰富

    (1)上篇:软件设计模式例子代码  【例2.2】简单工厂方法模式-汽车保险  【例2.3】工厂方法模式-汽车保险  【例2.4】抽象工厂模式-房屋信息  【例2.5】生成器模式-房屋信息  【例2.6】单例模式-互联网...

    23种设计模式的java源代码----容易理解的源代码

    里面包含了23中设计模式源代码,其中包括工厂模式(Factory)、单例(Singleton)、观察者模式(Observer)、适配器模式(Adapter)、Template模式、Decorate模式、proxy模式等 这些设计模式源代码更容易理解

    java 单例模式

    这个是从《java性能优化》上面截取下来的例子,觉得单例模式还是比较重要的,但是这个从多个方面对单例进行讲解!值得一看

    设计模式之单例模式

    计算机科学与技术课程《设计模式》课程作业,关于单例模式的一些整理,还有基于java的例子。

    研磨设计模式-part2

    《研磨设计模式》在内容上深入、技术上实用、和实际开发结合程度很高,书中大部分的示例程序都是从实际项目中简化而来,因此很多例子都可以直接拿到实际项目中使用。如果你想要深入透彻地理解和掌握设计模式,并...

    研磨设计模式-part4

    《研磨设计模式》在内容上深入、技术上实用、和实际开发结合程度很高,书中大部分的示例程序都是从实际项目中简化而来,因此很多例子都可以直接拿到实际项目中使用。如果你想要深入透彻地理解和掌握设计模式,并...

    研磨设计模式-part3

    《研磨设计模式》在内容上深入、技术上实用、和实际开发结合程度很高,书中大部分的示例程序都是从实际项目中简化而来,因此很多例子都可以直接拿到实际项目中使用。如果你想要深入透彻地理解和掌握设计模式,并...

    设计模式例子(java版本)

    用java写的几个常用的设计模式。包括 工厂模式、适配器模式、桥接模式、建造者模式、命令模式、组合模式、装饰模式、外观模式、工厂方法模式、迭代器模式、观察者模式、代理模式、单例模式、状态模式、策略模式、...

    组合模式-五子棋代码.zip

    本资源包含由Java设计模式中的“组合模式”实现的“五子棋”所有源代码,需要的朋友可以下载哦!

    设计模式_创建类_5种模式Java的实际例子_注释详细

    设计模式_创建类_5种模式Java的实际例子_注释详细 包括 1、单例模式(Singleton) 2、工厂方法(Factory Method) 3、抽象工厂(Abstract Factory) 4、建造模式(Builder) 5、原型模式(Prototype)

    java模式设计之单例模式

    java模式设计之单例子模式,适合初学java的选手!!!!

    java设计模式之禅

    以简单、诙谐幽默的例子讲述面向对象设计中的23中设计模式。策略模式、观察者模式、单例模式、工厂方法、抽象工厂、迭代器模式、状态模式、适配器模式、装饰者模式、组合模式、原型模式、模板方法……

    单例模式,single

    单例模式是最简单的设计模式之一,但是对于Java的开发者来说,它却有很多缺陷。在本月的专栏中,David Geary探讨了单例模式以及在面对多线程(multithreading)、类装载器(classloaders)和序列化(serialization)时...

Global site tag (gtag.js) - Google Analytics