A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 齐连涛 中级黑马   /  2012-10-20 10:45  /  1140 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 齐连涛 于 2012-10-26 17:11 编辑

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

评分

参与人数 1黑马币 +1 收起 理由
刘芮铭 + 1

查看全部评分

4 个回复

倒序浏览
本帖最后由 杜正华 于 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;
}

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
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-20 14:31
单例设计模式方法:
1.构造方法私有,也就是说别人不可以使用
2.只有一个实例对象

谢谢 明白了
回复 使用道具 举报
不客气 嘿嘿
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马