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

单例模式 读书笔记

阅读更多
确保一个类只有一个实例,并且只有一个全局访问点。如果使用多个类加载器,可能导致单例模式失效而产生多个实例。单例不允许继承,全局变量也会产生多个实例. 单例模式和工厂模式,抽象工程模式 其实都是为了创建对象,但是单例模式只能产生一个对象实例,而工厂模式可以产生不同类型的对象,抽象工厂模式却能批量产生不同类型的对象。单例模式产生的对象有些孤独,是寡者,没有兄弟,一般对特别重要的资源才可能用到单例模式,这些资源只有一份,就如皇帝,太阳只有一个,皇帝是不希望其他人与他同时也是皇帝的,哪怕是自己的兄弟姐妹。
  • synchronized 对线程同步有作用,但是会降低性能。如果对性能要求不高采用此办法


public class SynchronizedSingleton {
 private  int i=0;
 private static SynchronizedSingleton uninstance=null;
 private void SynchronizedSingleton() {
 }
 public static synchronized SynchronizedSingleton getInstance() {
  if (uninstance == null)
   uninstance= new SynchronizedSingleton();
  
   return uninstance;
 }
 public void hello(){
  System.out.println(++i);
 }
 
}


  • 使用"急切"创建实例,而不用延迟实例化的做法。 此法负担不很繁重。此法依赖JVM加载这个类时马上创建唯一单件实例。JVM保证在任何线程访问uniqueInstance静态变量之前,一定先创建此 实例。


public class EagerlySingleton {
 private  int i=0;
 private static EagerlySingleton uniqueInstance=new EagerlySingleton();
 private EagerlySingleton(){}
 public static EagerlySingleton getInstance(){
  return uniqueInstance;
 }
 public void hello(){
  System.out.println(++i);
 }
}


  • 用“双重检查加锁”,在getInstance中减少使用同步。此方法依赖jdk1.5

public class DoubleCheckedSynchronizedSingleton {
 private  int i = 0;
 private volatile static DoubleCheckedSynchronizedSingleton uninstance = null;
 private void SynchronizedSingleton() {
 }
 public static DoubleCheckedSynchronizedSingleton getInstance() {
  if (uninstance == null) {
   synchronized (DoubleCheckedSynchronizedSingleton.class) {
    if (uninstance == null) {
     uninstance = new DoubleCheckedSynchronizedSingleton();
    }
   }
  }
  return uninstance;
 }
 public void hello() {
  System.out.println(++i);
 }
}
分享到:
评论

相关推荐

    设计模式读书笔记

    创建型设计模式关注的是对象的创建,如工厂方法、抽象工厂、建造者、原型和单例模式,它们分别处理不同程度的对象创建延迟和实例化过程。结构型模式则涉及如何组合类和对象,包括适配器、桥接、组合、装饰器、外观、...

    JAVA与模式读书笔记。

    在《JAVA与模式读书笔记》中,我们探讨的是Java编程语言与设计模式的结合应用,这对于深入理解面向对象编程和提升软件开发能力至关重要。设计模式是软件工程中的最佳实践,它们是解决常见问题的模板,可以提高代码的...

    设计模式的读书总结笔记

    1. 创建型模式:如单例模式(Singleton)、工厂模式(Factory Method)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)和原型模式(Prototype)。这些模式关注对象的创建,旨在降低对象的创建过程与使用...

    Head First设计模式读书笔记-DesignPatterns.zip

    2. **单例模式**:单例模式确保一个类只有一个实例,并提供全局访问点。这样可以控制资源的使用,比如线程池、缓存或者对话框等。实现时需防止反序列化和反射创建多个实例。 3. **观察者模式**:行为型设计模式,它...

    C++读书笔记

    12. **设计模式**:在C++中,了解和应用设计模式(如工厂模式、单例模式、观察者模式等)可以帮助开发者写出高效、可维护的代码。 以上是C++编程的一些核心概念,但实际的读书笔记可能会包含更多细节,如特定的编程...

    Java游戏编程读书笔记

    9. **游戏设计模式**:作为编程的最佳实践,设计模式在游戏开发中扮演重要角色,如单例模式用于管理全局资源,工厂模式用于对象创建,观察者模式用于事件处理等。 10. **性能优化**:Java的垃圾回收机制虽然方便,...

    Effective Java读书笔记.pdf

    * 可以实现单例模式:静态工厂方法可以实现单例模式,确保只有一个对象实例存在。 * 可以缓存对象:静态工厂方法可以缓存对象,提高程序的性能。 然而,静态工厂方法也存在一些缺点,如不能被继承、不容易被发现等...

    代码质量-读书笔记

    下面将详细解读这个领域的核心知识点,并基于"代码质量-读书笔记"的内容展开讨论。 首先,我们要理解什么是代码质量。代码质量不仅仅关乎代码的正确性,更包括其可读性、可维护性、可扩展性等多个方面。良好的代码...

    JAVA面向对象编程(孙卫琴)读书笔记(三)

    - 设计模式是解决常见编程问题的经验总结,如工厂模式、单例模式、观察者模式等,它们是面向对象设计的精髓。 这篇读书笔记通过孙卫琴老师的视角,对上述知识点进行了详细解读和实例演示,有助于读者深入理解Java...

    设计模式-读书笔记(水印)1

    抽象工厂也可以与桥接模式结合,封装特定关系,或者与单例模式配合,控制对象的唯一实例。 设计模式的学习和应用对于提升软件设计的灵活性、可维护性和可扩展性至关重要。在Python等编程语言中,设计模式的实践有助...

    《C#与.NET3.0高级程序设计》读书笔记

    5. 高级设计模式:书中可能涵盖了常见的设计模式,如工厂模式、单例模式、观察者模式等,这些模式在解决特定问题时能提供可复用的解决方案,提高代码质量。 6. 并发和多线程:随着多核处理器的普及,理解和掌握并发...

    effective java 读书笔记

    - Item3:单例模式应使用私有构造子和静态工厂方法实现,确保只有一个实例存在。若需要线程安全,推荐使用枚举类型实现单例,因为枚举是自动线程安全的。 - Item4:如果一个类不应当被实例化,使用私有构造子并...

    C++读书笔记 C++编程技巧

    这份"C++读书笔记"无疑为学习者提供了一条系统性地掌握这门语言的道路。笔记作者凭借多年的实践经验,提炼出了一系列精华要点,旨在帮助读者避开陷阱,掌握高效编程方法。 1. **基础概念**:C++是一种静态类型的、...

    Go语言实战读书笔记系列合集.zip

    - **Go语言设计模式**:如工厂模式、单例模式、装饰器模式等在Go语言中的实现。 - **Go语言性能调优**:如何利用工具分析和优化Go程序的性能。 - **Go语言的最佳实践**:如何编写符合Go语言风格的代码,遵循Go语言的...

    thinking in java 读书笔记(五)

    这篇读书笔记主要聚焦在第五部分的内容,可能涵盖了类、对象、继承、多态等关键主题。由于没有具体的描述内容,我将根据《Thinking in Java》第五部分的一般性知识点进行阐述。 1. **类与对象**:在Java中,类是...

    Java学习笔记(必看经典)

    10. **设计模式**:《Java与模式》这本书很可能介绍了常见的设计模式,如单例模式、工厂模式、观察者模式等,这些都是软件开发中的最佳实践。 11. **Java EE(企业版)**:如果笔记涉及到此部分,可能会讲解Servlet...

    Effective-Java读书笔记(上)

    ### Effective Java读书笔记(上) #### 第一章 引言 本书主要针对Java开发者提供了大量实用的编程指导建议,帮助读者提升代码质量和程序性能。在本章节中,我们将重点介绍对象的创建与销毁,以及一些重要的设计...

    android 艺术开发探索 读书笔记(1-3章)

    ### Android艺术开发探索读书笔记(1-3章) #### 概述 《Android艺术开发探索》一书深入探讨了Android应用开发的核心技术和实践方法。本书第1至3章重点介绍了Activity生命周期、启动模式以及Android IPC机制等内容...

    程序员面试宝典笔记总结

    23种设计模式是面试中常见的考点,包括单例模式、工厂模式、代理模式、装饰器模式等,理解其应用场景和实现方式。 七、框架与工具 1. **前端框架**:React、Vue、Angular的使用和原理,以及CSS预处理器如Sass、...

    设计模式之蝉

    书中包含了作者的个人读书笔记,这表明除了正文内容之外,作者还提供了自己的理解与见解,这些笔记可能对理解设计模式的精髓与实际应用有很大的帮助。 在内容部分,我们可以看到有关于设计模式的一些具体讨论,例如...

Global site tag (gtag.js) - Google Analytics