SingleTon Design Pattern
来源:互联网 发布:考淘宝运营 证书 编辑:程序博客网 时间:2024/05/18 01:24
Singleton Pattern:There is only one instance in java application.
Advantage:1.Reduce memory2.Easy to do rubbish back.
The best way to implement it by enum.There are serveral functions to implement it by follow.
package com.sean.singleton;
/**
* Lazy initialize
* @author Sean_Zhang
*
*/
public class SingleTon1_1 {
//It doesn't care about concurrent.
private SingleTon1_1() {}
private static SingleTon1_1 INSTANCE = null;
public static SingleTon1_1 getInstance() {
if(INSTANCE == null) {
INSTANCE = new SingleTon1_1();
}
return INSTANCE;
}
}
/**
*
*/
package com.sean.singleton;
/**
* Lazy initialize
* @author Sean_Zhang
*
*/
public class SingleTon1_2 {
//It does do cuncurrent,but performance is bad.
private SingleTon1_2() {}
private static SingleTon1_2 INSTANCE = null;
public synchronized static SingleTon1_2 getInstance() {
if(INSTANCE == null) {
INSTANCE = new SingleTon1_2();
}
return INSTANCE;
}
}
/**
*
*/
package com.sean.singleton;
/**
* @author Sean_Zhang
*
*/
public class SingleTon1_3 {
//It does do cuncurrent,double check will cause problem
//pseudo to cause some problem(乱序会导致问题)
private SingleTon1_3() {}
private static SingleTon1_3 INSTANCE = null;
public static SingleTon1_3 getInstance() {
if(INSTANCE == null) {
synchronized(SingleTon1_3.class) {
if(INSTANCE == null) {
INSTANCE = new SingleTon1_3();
}
}
}
return INSTANCE;
}
}
package com.sean.singleton;
/**
* @author Sean_Zhang
*
*/
public class SingleTon1_4 {
//Fix pseudo
private SingleTon1_4() {}
private static SingleTon1_4 INSTANCE = null;
public static SingleTon1_4 getInstance() {
if(INSTANCE == null) {
synchronized(SingleTon1_4.class) {
SingleTon1_4 tmp = INSTANCE;
if(INSTANCE == null) {
INSTANCE = new SingleTon1_4();
}
}
}
return INSTANCE;
}
}
package com.sean.singleton;
import java.io.Serializable;
/**
* @author Sean_Zhang
*
*/
public class SingleTon1_5 implements Serializable {
private SingleTon1_5() {}
private static SingleTon1_5 INSTANCE = null;
public static SingleTon1_5 getInstance() {
if(INSTANCE == null) {
synchronized(SingleTon1_5.class) {
SingleTon1_5 tmp = INSTANCE;
if(INSTANCE == null) {
INSTANCE = new SingleTon1_5();
}
}
}
return INSTANCE;
}
}
/**
*
*/
package com.sean.singleton;
/**
* @author Sean_Zhang
*
*/
public class SingleTon2_1 {
//No Problem,But it would not same instance when multi classload.
private SingleTon2_1() {}
private static SingleTon2_1 INSTANCE = new SingleTon2_1();
public static SingleTon2_1 getInstance() {
return INSTANCE;
}
}
/**
*
*/
package com.sean.singleton;
import java.io.Serializable;
/**
* @author Sean_Zhang
*
*/
public class SingleTon2_2 implements Serializable {
// No Problem,But it would not same instance when multi classload.
private SingleTon2_2() {}
private static SingleTon2_2 INSTANCE = new SingleTon2_2();
public static SingleTon2_2 getInstance() {
return INSTANCE;
}
}
/**
*
*/
package com.sean.singleton;
/**
* @author Sean_Zhang
*
*/
public class SingleTon3_1 {
private SingleTon3_1() {}
static class SingleTonHolder {
private static SingleTon3_1 INSTANCE = new SingleTon3_1();
}
public synchronized static SingleTon3_1 getInstance() {
return SingleTonHolder.INSTANCE;
}
}
/**
*
*/
package com.sean.singleton;
import java.io.Serializable;
/**
* @author Sean_Zhang
*
*/
public class SingleTon3_2 implements Serializable {
private SingleTon3_2() {}
static class SingleTonHolder {
private static SingleTon3_2 INSTANCE = new SingleTon3_2();
}
public synchronized static SingleTon3_2 getInstance() {
return SingleTonHolder.INSTANCE;
}
}
/**
*
*/
package com.sean.singleton;
/**
* @author Sean_Zhang
*
*/
public enum SingleTon4 {
INSTANCE;
}
- Design Pattern 8-singleton
- [Design Pattern]:Singleton
- design pattern : Singleton
- Design pattern--Singleton
- C++ Singleton design pattern
- java singleton design pattern
- Singleton Design Pattern
- Singleton Design Pattern
- SingleTon Design Pattern
- Design pattern: Singleton
- Design Pattern: Singleton 模式
- java design pattern - singleton
- Design Pattern:Singleton
- Design Pattern: Singleton 模式
- Singleton Design Pattern Tutorial
- Java Design Pattern: Singleton
- Design Pattern—Singleton
- Design Pattern--Singleton
- nodejs也可以带动php了
- UsePngDrawBK图片做背景
- Hibernate缓存管理
- 将utf8等编码格式转换为shift_jis格式
- 你真的喜欢测试吗?你真的适合测试吗?
- SingleTon Design Pattern
- webdiyer:AspNetPager控件样式设置
- 程序员应该知道的100个vim命令
- Hibernate中get和load方法的区别
- Spring的四种声明式事务的配置-Hibernate事务
- VB6.0中使用鼠标滑轮的解决方法
- 在Xcode 4.2 IOS 5.0中为低版本IOS开发
- android 中 系统日期时间的获取
- 创意与策划——网络营销的魂与骨