黑马程序员技术交流社区
标题:
用单例设计个枚举。
[打印本页]
作者:
wenbaoxing
时间:
2013-10-18 21:42
标题:
用单例设计个枚举。
本帖最后由 wenbaoxing 于 2013-10-19 11:28 编辑
当枚举只有一个元素时,就可以作为一种单例的实现方式。
给个代码?没有代码,不太理解!!!!
作者:
wangyafeng1990
时间:
2013-10-18 21:52
public class KillPeople{
public static void main(String[] args) {
People.blackPeople.kill();
}
public enum People {
blackPeople;
public void kill(){
System.out.println("黑人被杀了");
}
}
}
作者:
風諾
时间:
2013-10-18 22:38
单例设计模式特点:只能让该类产生一个对象
实现方法:
1、private构造方法
2、内部创建一个private本类对象
3、提供方法获取该对象
枚举类特点:
1、内部元素有限个,而且是固定不变的(就是相当于一个橱柜罗列了很多东西)
2、构造方法也是private
3、通过匿名内部类实现方法
通过比较的话,可以看到,单例和枚举很像
private的构造方法决定了这两个类都不能通过外部代码创建对象
枚举类中的对象是在类中定义的,所以当枚举只有一个对象的时候,你无法创建其他对象,只能用它提供的,就成了单例
作者:
aion2013tian
时间:
2013-10-19 08:37
单例模式的特点:构造方法私有化;内部创造私有化的对象;有且仅有一个对象;对外提供获取唯一对象的方法
枚举类的特点:构造方法私有化;内部元素为固定个数;通过匿名内部类实现方法
通过枚举实现单例的代码如下
public enum EnumDemo {
Instance;
public String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static void main(String[] args) {
Instance.setName("IT");
System.out.println(Instance.getName());
}
}
其实就是将枚举中的元素固定为一个,然后对枚举中的这个唯一的元素进行操作的啊
单例只是一种设计模式,而枚举是Java中的一种特殊类
作者:
aion2013tian
时间:
2013-10-19 09:06
上面我回复的代码是用枚举实现的单例模式,下面我再用单例模式实现枚举,代码如下:
public enum SingletonOne {
RED(255, 0, 0), GREEN(0, 255, 0), BLUE(0, 0, 255);
int redValue;
int greenValue;
int blueValue;
private SingletonOne(int red, int green, int blue) {
this.redValue = red;
this.greenValue = green;
this.blueValue = blue;
}
public int getRedValue() {
return redValue;
}
public void setRedValue(int red) {
this.redValue = red;
}
public int getGreenValue() {
return greenValue;
}
public void setGreenValue(int green) {
this.greenValue = green;
}
public int getBlueValue() {
return blueValue;
}
public void setBlueValue(int blue) {
this.blueValue = blue;
}
public static void main(String[] args) {
System.out.println(SingletonOne.RED.getRedValue());
}
}
用单例实现枚举就是把枚举中的每一个元素都写成一个单例
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2