黑马程序员技术交流社区

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

作者: 小海    时间: 2014-3-20 22:16
标题: 有关枚举的问题
本帖最后由 小海 于 2014-3-22 10:08 编辑

什么是单例设计模式?枚举可以定义成私有的吗?

作者: pifuhanshu    时间: 2014-3-20 22:40
单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。
  1. /**
  2. *单例模式:
  3. *1.饿汉式
  4. *2.懒汉式
  5. * @author admin
  6. *饿汉式
  7. */
  8. public class SingleTon {

  9.         /**
  10.          * @param args
  11.          */
  12.         public static void main(String[] args) {
  13.                 private  static  SingleTon  singleton=new SingleTon();
  14.                 SingleTon(){
  15.                        
  16.                 }
  17.                 public SingleTon getInstance(){
  18.                         return  singleton;
  19.                 }
  20.         }
  21. }
  22. /**
  23.   * 饿汉式:
  24.   *                饿汉式一开始就自定义一个私有、静态的对象。这样就使的加载较快,不存在进程
  25.   *同步的问题。缺点就是在进程运行时把所有的对象都加载进内存,容易造成加载速度慢,
  26.   *影响整体的性能。
  27.   */


  28. /**
  29.   * 懒汉式
  30.   */
  31. public  class   SingleTon1{
  32.          public static void main(String[] args){
  33.                  private  static SingleTon1  singleton;
  34.                  public static synchronized getInstance(){
  35.                          if (singleton!=null) {
  36.                                 singleton=new SingleTon();
  37.                         }
  38.                          return  singleton;
  39.                  }         
  40. }
  41. /**
  42.   * 懒汉式:
  43.   *                 懒汉式开始并没有创建一个静态的对象,但是懒汉式要使用加锁的方式返回创建的对象。这样线程
  44.   * 不安全,另外懒汉加载有时延、无须使用加锁方式保证线程的安全。
  45.   */

复制代码


枚举就是要让某个类型的变量的取值只能为了若干个固定值中的一个,否则,编译器就会报错。枚举可以让编译器在编译的时候就可以控制源程序中填写的非法值。带构造方法的枚举,构造方法必须定义成私有的。这样可以保证外部代码无法新构造枚举类的实例。这也是完全符合情理的,因为我们知道枚举值是public static final的常量而已。











作者: 小海    时间: 2014-3-21 09:25
回答的很详细,谢谢
作者: lwy0319    时间: 2014-3-21 14:34
单例模式讲得比枚举早多了。。。建议看看前面啊。。不然可能在讲后面的时候还是会发生类似的问题。




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