您的位置:首页 > 编程语言 > Java开发

枚举实现单例

2013-11-02 12:14 357 查看
不看不知道,java的枚举是很强大的,可以先搜索一下枚举的使用方法。

 

下面是使用枚举实现单例模式:

1.

public enum Singleton {
INSTANCE {
public void someMethod() {
// . . .
}
};

protected abstract void someMethod();
}

 

2.

public enum Elvis {

INSTANCE("wangfabo", 1);
private final int id;
private final String name;

Elvis(String n, int i) {
id=i;
name=n;
}

public void leaveTheBuilding() {
System.out.println("name:"+name+" id:"+id);;
}
public Elvis getInstance(){
return INSTANCE;
}
}


3.

enum Singleton {
RED(255, 0, 0), GREEN(0, 255, 0), BLUE(0, 0, 255);

// 构造枚举值
Singleton(int rv, int gv, int bv) {
this.redValue = rv;
this.greenValue = gv;
this.blueValue = bv;
}

// 自定义数据域,private为了封装。
private int redValue;
private int greenValue;
private int blueValue;

public int getRedValue() {
return redValue;
}

public void setRedValue(int redValue) {
this.redValue = redValue;
}

public int getGreenValue() {
return greenValue;
}

public void setGreenValue(int greenValue) {
this.greenValue = greenValue;
}

public int getBlueValue() {
return blueValue;
}

public void setBlueValue(int blueValue) {
this.blueValue = blueValue;
}
}

public class Demo {
public static void main(String[] args) {
System.out.println(Singleton.RED.getRedValue());
}
}


使用enum关键字来实现单例模式的好处是这样非常简洁,并且无偿地提供了序列化机制,绝对防止多次实例化,即使是在面对复杂的序列化或者反射攻击的时候。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息