黑马程序员技术交流社区

标题: 枚举的问题 [打印本页]

作者: 齐连涛    时间: 2012-10-20 10:45
标题: 枚举的问题
本帖最后由 齐连涛 于 2012-10-26 17:11 编辑

枚举中只有一个元素,可以作为一种单例设计模式,什么意思? 各位大牛能否举例说 明下?

作者: 杜正华    时间: 2012-10-20 14:31
本帖最后由 杜正华 于 2012-10-20 17:13 编辑

单例设计模式方法:
1.构造方法私有,也就是说别人不可以使用
2.只有一个实例对象
3.提供方法创建使用实例对象而且方法必须是static方法,因为不能使用构造方法创建实例对象,只能通过类访问
枚举类:
1.枚举类是特殊的抽象类,所以不能使创建实例对象
2.枚举类的元素是它的实例对象,如果让它只有一个元素那么就是只有一个实例
3.提供方法访问对象
  1. //单例模式(饿汉式)
  2. class LanTest{
  3. private LanTest(){

  4. }
  5. private static LanTest t = new LanTest();
  6. public static LanTest getInstance(){

  7. return t;
  8. }

  9. }
复制代码
  1. package com.itcast.practise;

  2. public class AbstractTest {

  3. /**
  4. * @param args
  5. */
  6. public static void main(String[] args) {
  7. // TODO Auto-generated method stub
  8. //下面结果为true由此可见I是InterfaceTest的对象
  9. System.out.println(InterfaceTest.class == InterfaceTest.I.getClass());

  10. }

  11. }
  12. enum InterfaceTest{

  13. I;
  14. public static InterfaceTest main(){
  15. return I;

  16. }
  17. }
复制代码
--------------------------------------------------------------------------------------------------------------------------------
由于枚举类的元素默认是用Static修饰的,所以可以用EnumTest.t直接访问,以下实例就是一个单例,lz可以看看张老师的java基础加强,里面枚举讲的很详细
enum EnumTest{
  t;
}

作者: 草上飞    时间: 2012-10-26 16:35
package myfirstpackage;

public class MyTest {

public static void main(String[] args) {
  Test t = Test.test1;
}

}

class Test
{
private Test(String s)
{
  System.out.println(s);
}

public static final Test
  test1 = new Test("test1"),
  test2 = new Test("test2"),
  test3 = new Test("test3");
}


这是我写的简单的枚举,以下是打印结果
test1
test2
test3
作者: 齐连涛    时间: 2012-10-26 17:11
杜正华 发表于 2012-10-20 14:31
单例设计模式方法:
1.构造方法私有,也就是说别人不可以使用
2.只有一个实例对象

谢谢 明白了
作者: 杜正华    时间: 2012-10-27 11:47
不客气 嘿嘿




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2