`
xiaolixv
  • 浏览: 3518 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

JAVA设计模式--读书笔记三(单例模式)

阅读更多

1  单例模式要点

1.1          单例类只能有一个实例。

1.2          单例类必须自行创建唯一的实例

1.3          单例类必须向其它所有对象提供这一实例

2  单例类的实现方式:

2.1          饿汉式单例类:

class Singleton {    

    

//私有,静态的类自身实例   

private static Singleton instance = new Singleton();   

 

//私有的构造子(构造器,构造函数,构造方法)   

private Singleton(){}   

 

//公开,静态的工厂方法   

public static Singleton getInstance() {   

  return instance;   

}   

}  

特点:在类加载的时候就创建了实例,且构造函数是私有的,实现了外界利用构造函数创造出多个实例,但是同时也由于构造函数私有是该类不能继承。

2.2          懒汉式单例类:

class LazySingleton {   

    //初始为null,暂不实例化   

    private static LazySingleton instance = null;   

       

    //私有的构造子(构造器,构造函数,构造方法)   

    private LazySingleton(){}   

       

    //公开,静态的工厂方法,需要使用时才去创建该单体   

    public static LazySingleton getInstance() {   

        if( instance == null ) {   

            instance = new LazySingleton();   

        }   

        return instance;   

    }      

}  

    特点:在类第一次被引用的时候创建,且构造函数私有,使该类不能继承。

2.3          登记式单例类:

package pattern.singleton;

import java.util.HashMap;
import java.util.Map;

//
登记式单例类
.
//
类似Spring里面的方法,将类名注册,下次从里面直接获取。


public class Singleton3 {
    private static Map<String,Singleton3> map = new HashMap<String,Singleton3>();
    static{
        Singleton3 single = new Singleton3();
        map.put(single.getClass().getName(), single);
    }
    
    //
保护的默认构造函数
    protected Singleton3(){}
    
    //
静态工厂方法,返还此类惟一的实例
    public static Singleton3 getInstance(String name) {
        if(name == null) {
            name = Singleton3.class.getName();
            System.out.println("name == null"+"--->name="+name);
        }
        if(map.get(name) == null) {
            try {
                map.put(name, (Singleton3) Class.forName(name).newInstance());
            } catch (InstantiationException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
        }
        return map.get(name);
    }
}

public class Singleton extends Singleton3 {

    

//默认构造函数
    public Singleton(){}

 

   public static Singleton getInstance(String name) {

 

         return (Singleton) Singleton3 . getInstance(this.name())

}

    

}

特点:实现了类的继承;其子类必须在父类的帮助下才能实现实例化。由于子类和父类的数据类型不同,所以无法在父类中提供统一的方法;由于子类的构造函数是公开的,这样就允许产生的实例不再父类等集中了。

 

3  注意事项:

在多个JVM或者多个类加载器中应该注意单例模式的使用。因为多个类加载之间是绝缘的,多个JVM也是这样的

4  多例模式:

4.1          特点:多例类可有多个实例

4.2          必须自己创建、管理自己的实例,并且向外界提供自己的实例

分享到:
评论

相关推荐

    单例设计模式--浅浅笔记

    单例设计模式是一种常用的设计模式,它主要用于控制类的实例化过程,确保在整个应用程序中,一个类只有一个实例存在。这种模式常被用于那些需要频繁创建和销毁,且资源消耗较大的对象,例如数据库连接、线程池或者...

    设计模式(Java 与模式-笔记 二)

    本文主要关注的是Java编程语言中的设计模式,结合“Java与模式-笔记二”的博客内容,我们将深入探讨其中的一些核心设计模式及其在实际开发中的应用。 首先,我们来谈谈单例模式(Singleton)。单例模式确保一个类...

    根据《JAVA与设计模式》整理的笔记及示例代码

    这份"根据《JAVA与设计模式》整理的笔记及示例代码"涵盖了Java语言和设计模式的核心概念,旨在帮助开发者理解和应用这些模式。 一、设计模式的基本概念 设计模式是对在特定情境下软件设计问题的解决方案的一种描述...

    韩顺平_Java设计模式笔记.docx

    本资源摘要信息是对《韩顺平_Java设计模式笔记.docx》的总结和分析,该笔记涵盖了 Java 设计模式的基础知识、设计模式的七大原则、原型设计模式、解释器设计模式、单例设计模式等内容,并对每个设计模式的原理、实现...

    Java设计模式教程

    该资料介绍Java各类开发模式,包含以下教程:《深入浅出设计模式(中文版)》《Java单例模式》《Java设计模式-图解-附代码》《JAVA设计模式之单例模式(完整版)》《Java学习笔记(必看经典)》《Java总复习》《单例模式》...

    17-Java单例模式的学习笔记1

    Java 单例模式是一种设计模式,它用于保证一个类只有一个实例,并提供全局访问点。这种模式在需要控制类的实例化次数,或者当类的创建是昂贵的操作时非常有用。以下是对不同单例实现方式的详细说明: 1. **懒汉式**...

    Java 版设计模式学习笔记-java-design-patterns.zip

    以上只是部分Java设计模式的概述,实际的学习笔记中可能还包括这些模式的实现示例、应用场景以及优缺点分析等,这些都是提高软件设计能力的重要资料。通过深入理解和实践这些设计模式,开发者可以编写出更加高效、可...

    《java学习》-java后端学习笔记.zip

    6. 设计模式:设计模式是解决常见软件设计问题的经验总结,如单例模式、工厂模式、观察者模式等。熟悉和应用这些模式,能够提升代码的可读性、可维护性和复用性。 7. SQL优化:在处理数据库操作时,了解如何编写...

    计算机后端-Java-图解java设计模式笔记.zip

    本压缩包"计算机后端-Java-图解java设计模式笔记"提供了对Java设计模式的深入理解,通过图形化的方式帮助开发者更好地理解和应用这些模式。 1. **单例模式**:保证一个类只有一个实例,并提供一个全局访问点。常见...

    韩顺平_java设计模式笔记

    Java设计模式是软件开发中的一种最佳实践,它们是为了解决特定场景下的设计问题而发展起来的。23种设计模式被广泛应用于提高代码的可重用性、可读性、可维护性和灵活性。韩顺平老师的Java设计模式课程通过生活中的...

    尚硅谷设计模式源码笔记课件.zip

    本课程是使用Java来讲解设计模式,考虑到设计模式比较抽象,授课采用 图解+框架源码分析的方式 1) 内容包括: 设计模式七大原则(单一职责、接口隔离、依赖倒转、里氏替换、开闭原则、迪米特法则、合成复用)、UML...

    图解java设计模式_学习笔记_java开发

    这份"图解java设计模式_学习笔记"是针对Java开发者深入理解和应用设计模式的重要资源。在这里,我们将深入探讨Java设计模式的核心概念、分类以及它们在实际开发中的应用。 设计模式分为三大类:创建型、结构型和...

    java设计模式源码和笔记(第一部分)

    本资料包“java设计模式源码和笔记(第一部分)”提供了对Java设计模式的深入理解和实践。其中包含了个人的学习笔记和Eclipse环境下实现的源码,方便读者导入后直接运行,进行实践操作。 1. **单例模式**:确保一个...

    小码哥-任小龙Java笔记-面向对象的全部笔记

    单例设计模式** - 单例模式确保一个类只有一个实例,并提供一个全局访问点。 - 实现方式:使用私有构造器和静态工厂方法或枚举。 **15. 包装类型的操作** - 对于基本类型的包装类型,比较时应使用`equals()`而...

    图解Java设计模式笔记总结word版本.rar

    本资料“图解Java设计模式笔记总结word版本”聚焦于通过图文并茂的方式,深入浅出地解析各种设计模式。以下是基于这个主题的详细知识点讲解: 1. **设计模式的分类** - **创建型模式**:如单例(Singleton)、工厂...

    《java学习》-java学习笔记.zip

    设计模式是解决常见编程问题的模板,Java开发者应该熟悉常见的设计模式,如单例、工厂、观察者、装饰器、适配器等。这些模式能够提高代码的可读性、可维护性和复用性。 6. **概念区别(概念区别.md)**: 这个...

    Java设计模式学习笔记.pdf

    在学习Java设计模式时,掌握其概念、应用、优点和缺点非常重要。设计模式是软件开发中经常使用的一种通用解决方案模板,用于解决特定上下文中的常见问题。它们源于设计模式的研究,通常被认为是软件设计中的最佳实践...

    高质量JAVA程序设计-个人学习笔记

    8. **设计模式**:笔记中可能涵盖常见的设计模式,如工厂模式、单例模式、观察者模式、装饰器模式等,这些模式为解决特定问题提供了标准解决方案。 9. **异常性能优化**:学习如何通过优化代码、减少不必要的对象...

    单例模式案例和笔记,通过案例来了解单例模式

    Java中的23种设计模式中,单例模式是一种常见且实用的模式。 **单例模式的定义** 单例模式有三个关键特性: 1. 构造器私有化:不允许外部直接通过new关键字创建实例。 2. 持有一个自己类型的静态属性:存储唯一的...

Global site tag (gtag.js) - Google Analytics