黑马程序员——单例(懒汉式+饿汉式)
2012-08-21 18:19
204 查看
----------------------
android培训 java培训 期待与您交流! ----------------------
package com.be.six;
/**
* 开发一般用饿汉式,因为安全,简单
* @author zjw
*
*/
public class Singlton {
public static void main(String args[]){
//饿汉式用法
Singleton s=Singleton.getInstance();
s.setName("ffffffffffff");
s.setName("fffffddddddddddd");
s.test();
//懒汉式用法
Singleton1 s1=Singleton1.getInstance();
s1.setAge(33);
s1.getAge();
Singleton1 s2=Singleton1.getInstance();
s1.setAge(66);
s1.getAge();
}
}
/**
* 饿汉式
* Singleton一进内存,就已经创建好了对象
* @author zjw
*
*/
class Singleton{
private String name;
private Singleton(){}
private static Singleton s=new Singleton();
public static Singleton getInstance(){
return s;
}
public void test(){
System.out.println("name:"+name);
}
public void setName(String name){
this.name=name;
this.test();
}
}
/**
* 懒汉式
* Singleton1进内存,对象还没存在,只有调用了getInstance方法时,才建立对象,这就是延迟加载
* 缺点:
* 容易出错,
* 解决方案1,加同步关键字:Synchronized,但是加完后,程序执行效率会降低的很多
* 最终解决方案
*/
class Singleton1{
private int age;
private Singleton1(){}
private static Singleton1 s=null;
public static Singleton1 getInstance(){
if(null==s){
synchronized(Singleton1.class){//加锁 这是最终解决方案,双重判断,提高效率
if(null==s){
s=new Singleton1();
}
}
}
return s;
}
public int getAge(){
System.out.println("age:"+age);
return age;
}
public void setAge(int age){
this.age=age;
}
}
----------------------
android培训 java培训 期待与您交流! ----------------------
详细请查看 http://edu.csdn.net/heima
相关文章推荐
- 黑马程序员-----关于懒汉式和饿汉式小结
- 黑马程序员--懒汉式和饿汉式单例设计模式
- 黑马程序员_Singleton模式(单例模式)饿汉式和懒汉式
- 黑马程序员--单例设计模式的笔记(懒汉式,饿汉式)
- 黑马程序员-单例设计模式:“饿汉式”和“懒汉式”
- 黑马程序员-面向对象-06天-6(单例设计模式-饿汉式,懒汉式)
- 黑马程序员一单例设计模式的饿汉式与懒汉式以及加锁的情况
- 黑马程序员——java小结_007_单例设计模式(懒汉式、饿汉式)
- 黑马程序员—懒汉式和饿汉式
- 黑马程序员-单例设计模式:懒汉式和饿汉式
- 黑马程序员_专题:单例复习(懒汉式,饿汉式)
- 单例模式中,饿汉式和懒汉式有什么区别?各适合用在哪里?为什么说推荐用饿汉模式?
- (GOF23设计模式)_单例模式_应用场景_饿汉式_懒汉式
- 单例模式懒汉式与饿汉式java讲解
- 单例Singleton的“懒汉式”与“饿汉式”实现方法
- 理解单例设计模式(饿汉式,懒汉式,静态内部类,枚举,双重校验锁)
- 单例模式——懒汉式和饿汉式
- Java设计模式——单例模式(饿汉式、懒汉式)
- 懒汉式单例模式和饿汉式单例模式的区别
- 对象初始化过程与单例设计模式(饿汉式与懒汉式)