`
superwind
  • 浏览: 34373 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java实现单态的三种方法

阅读更多

第一种方法:

public class Singleton
{
       public static final Singleton INSTANCE = new Singleton();
       private Singleton()
      {
             //do something
      }
      public void otherMethod()
      {
            //do something
      }
}

 

第二种方法:

 

public class Singleton
{
      private static final Singleton INSTANCE = new Singleton();
      private Singleton()
      {
             //do something
      }

      public static Singleton getInstance()
      {
               return INSTANCE;
      }
      public void otherMethod()
      {
            //do something
      }
}

 第三种方法:用枚举实现,只能在java1.5之后版本中用

 

public enum Singleton
{
       INSTANCE;
       public void otherMethod()
       {
               //do something
       }
}

 

三种方法的比较:

 

    第一种方法的好处在于,非常的直观,public 的静态域清楚的表明是Singleton类是一个单态;

 

    第二种方法的好处在于,静态工厂方法保留了灵活性,可以灵活地在工厂方法里面修改代码,比如改成每个调用这个方法的线程返回一个唯一实例,甚至还可以修改成不返回唯一的实例。

 

    第三种方法,更加简洁,枚举类型保证了Singleton类的唯一性,而且还提供了序列化功能,因为枚举类的基类Enum实现了Serializable接口。

    因此Joshua Bloch推荐使用第三种, 他在effective java写道:

 “a single-element enum type is the best way to implement a singleton”.

 

 

 

分享到:
评论

相关推荐

    Java实现的单态登陆

    Java实现的单态登陆,里面有详细代码注释,也可参展这篇博客看看实现思路:http://blog.csdn.net/hongfeideng/article/details/7023865

    单态登录——只能在一个机器上登录(完整实例)

    Java实现单态登录

    java单态例子

    是个使用java实现的单态例子,开始接触java单态的或是不了解单态是怎么实现的同僚,是个不错的参考

    23种设计模式的java实现

    23种设计模式的java实现。创建型 抽象工厂模式 http://www.cnblogs.com/java-my-life/archive/2012/03/28/2418836.html 工厂方法 http://www.cnblogs.com/java-my-life/archive/2012/03/25/2416227.html 建造者模式 ...

    oracle proxool jar jdbc jar包 proxool源码包 Java实现 oracle proxool 实例

    有oracle连接池proxool 用到的jar 包 还有jdbc的驱动包 proxool的源码包 Java实现oracle proxool 单态的例子等

    java类的设计举例-animal

    5. 实现单态设计模式 6. 加异常信息 7. 加入多线程 8. 使用集合(可选) 二.设计场景,实现其要求 场景设计在一间公司,拥有很多的小猫小狗等宠物可以出卖。 1. 输出9只动物的全部信息,举例代表全部动物的信息,...

    Java的23种设计模式疯狂Java总结.doc

    设计模式(超级详细) 内容简介 有感于设计模式在日常开发中的重要性,同时笔者也自觉对设计模式小有心得,故笔者 *写二十三种设计模式的简单例子、 并整理二十三种设计模式的理论局部,综合汇总成这份Java设计模式〔...

    java基础案例与开发详解案例源码全

    2.3.2 Java程序开发三步曲21 2.3.3 开发Java第一个程序21 2.3.4 Java代码中的注释23 2.3.5 常见错误解析24 2.4 Java类库组织结构和文档27 2.5 Java虚拟机简介28 2.6 Java技术两种核心运行机制29 2.7 上机练习30 第3...

    JAVA设计模式之创造型模式介绍.doc

    在JAVA设计模式中,创造型模式包括工厂方法、抽象工厂、创造者模式、单态模式、原型模式等五类。 一、工厂方法模式 工厂方法模式定义一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod使一个类的...

    java设计模式CatalogDAOFactory是典型的工厂方法

    在上面的一段代码中一共用了三种模式,除了工厂模式外,还有Singleton单态模式,以及proxy模式,proxy模式主要用来授权用户对forum的访问,因为访问forum有两种人:一个是注册用户 一个是游客guest,那么那么相应的权限就不...

    二十三种设计模式【PDF版】

    设计模式之 Template(模板方法) 实际上向你介绍了为什么要使用 Java 抽象类,该模式原理简单,使用很普遍. 设计模式之 Strategy(策略) 不同算法各自封装,用户端可随意挑选需要的算法. 设计模式之 Chain of ...

    oracle proxool jar jdbc jar包 proxool源码包 Java oracle proxool 实例

    有oracle连接池proxool 用到的jar 包 还有jdbc的驱动包 proxool的源码包 Java实现oracle proxool 单态的例子等

    图书进存销系统java完整代码

    实现了一个简单的图书进存销系统,学习了使用JDBC进行数据库操作,使用Java的反射技术封装数据,使用单态模式去获得数据库连接,图片的压缩处理等知识点。

    Java封装继承多态实例以及文件流操作

    Java封装继承多态实例以及文件流操作,自己整理的东西,用了单态模式实现了多态,并且贯彻了OOP思想,用到了文件流的写入与读取,希望对大家有帮助

    基于SSH框架的音乐网站设计与实现

    本音乐网站基于Java Web技术,采用SSH轻量级框架组合进行设计与实现。网站利用UML建模,结合用户体验进行开发。网站的功能模块主要包括:登录注册、个人信息维护、用户/音乐/新闻管理、排行榜、播放器、个人收藏列表...

    图书进存销系统(练手项目九)

    * 学习了使用JDBC进行数据库操作,使用Java的反射技术封装数据,使用单态模式去获得数据库连接, 图片的压缩处理等知识点 * 在界面中主要使用JTable的处理,表现层、业务层与数据访问层的分层结构, 大大减低...

    设计模式整理(很全)

    创建模式 设计模式之Singleton(单态/单件) 阎宏博士讲解:单例(Singleton)模式 保证一个类只有一个实例,并提供一个访问它的全局访问点 设计模式之Factory(工厂方法和抽象工厂) 使用工厂模式就象使用new一样频繁....

    办公用品管理系统(JAVA+JSP+servlet).rar

    实习课题研究的主要内容与方法 办公自动化是新时期政府部门的一项重要基础性建设,是国民经济信息化在政府部门的具体体现之一,对推进政府管理现代化、决策科学化、运作高效化起着积极和重要的作用。办公自动化系统...

    Spring面试题

    在典型的面向对象开发方式中,可能要将日志记录语句放在所有方法和 Java 类中才能实现日志功能。在 AOP 方式中,可以反过来将日志服务模块化,并以声明的方式将它们应用到需要日志的组件上。当然,优势就是 Java 类...

Global site tag (gtag.js) - Google Analytics