`
kang
  • 浏览: 474620 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

创建模式之单例模式Singleton

 
阅读更多

<!----><!---->

单例模式Singleton的适用场合:一个类Class只要一个实例存在


公共操作,比如连接数据库、创建目录、创建文件等等。

 

 

 

 

1.没有使用单例模式:

 

<!---->

package com.javaeye.kang.singleton;

 

/**

  * 没有使用 例模式

  * 两次 new FileOpen(); 用了两次构造函数

  * 假如使用 FileOpen fo2 = fo1; 又会 求程序 使用 1000 行代 前定 fo1

  */

 

class FileOpen {

     

      public FileOpen() {

            System. out .println( " 构造函数 " );

      }

     

      public void createFile() {

            System. out .println( " 建文件 " );

      }

}

 

public class SingletonTest {

 

      public static void main(String[] args) {

            FileOpen fo1 = new FileOpen();

            fo1.createFile();

            //1000 行代

            FileOpen fo2 = new FileOpen();

            fo2.createFile();

      }

}

 

/* 当前 测试结

构造函

建文

构造函

建文

*/

 

 

2.使用单例模式1:

 

/**

  * 使用 例模式 1

  *

  */

 

class FileOpen {

     

        public static FileOpen fo = new FileOpen();

     

      // 外界提供本 自己 new

      public static FileOpen getInstance() {

            return fo ;

      }

     

// 将构造函数 置成私有的,不 外界直接 new 象,只能使用我 外提供的

      private FileOpen() {

            System. out .println ( " 构造函数 " );

      }

     

      public void createFile() {

            System. out .println ( " 建文件 " );

      }

}

 

public class SingletonTest {

 

      public static void main(String[] args) {

   // 直接使用 FileOpen 自己 外提供的 象,不再需要再人 地去 new

            FileOpen fo1 = FileOpen.getInstance ();

            fo1.createFile();

            //1000 行代

            FileOpen fo2 = FileOpen.getInstance ();

            fo2.createFile();

      }

}

 

/* 当前 测试结 果:

构造函数

建文件

建文件

*/

 

 

3.使用单例模式2:

 

/**

  * 使用 例模式 2

  * 于多 线 程,不太安全

  * 加同 来保 证线 程安全

  */

 

class FileOpen {

     

      public static FileOpen fo = null ;

     

      // 外界提供本 自己 new

      // 使用 synchronized 来保 证线 程安全

      public static synchronized FileOpen getInstance() {

            if ( fo == null ) {

                  fo = new FileOpen();

            }

            return fo ;

      }

     

// 将构造函数 置成私有的,不 外界直接 new 象,只能使用我 外提供的

      private FileOpen() {

            System. out .println( " 构造函数 " );

      }

     

      public void createFile() {

            System. out .println( " 建文件 " );

      }

}

 

 

<!----><!----> <!---->

public class SingletonTest {

 

 

<!----><!----> <!---->

      public static void main(String[] args) {

   // 直接使用 FileOpen 自己 外提供的 象,不再需要再人 地去 new

            FileOpen fo1 = FileOpen.getInstance ();

            fo1.createFile();

            //1000 行代

            FileOpen fo2 = FileOpen.getInstance ();

            fo2.createFile();

      }

}

 

/* 当前 测试结

构造函

建文

建文

*/
  • 描述: 单例模式
  • 大小: 105.4 KB
  • 描述: 单例模式要点
  • 大小: 99.9 KB
  • 描述: 单例模式小结
  • 大小: 101.9 KB
分享到:
评论

相关推荐

    Qt qml Singleton 单例模式

    在Qt的Qml环境中,单例模式是一种设计模式,它允许在整个应用程序中创建一个全局访问点,确保某个类只有一个实例存在。这样的设计模式在需要共享数据或者服务时非常有用,避免了多处创建相同对象导致的数据不一致或...

    创建型模式之单例模式(Singleton Pattern)

    单例模式是软件设计模式中的一种,属于创建型模式,它的主要目的是确保一个类只有一个实例,并提供一个全局访问点。这种模式在很多场景下都非常有用,例如管理共享资源、配置对象或者缓存服务等。 单例模式的核心...

    设计模式C++学习之单例模式(Singleton)

    单例模式的核心在于控制类的实例化过程,防止多处代码创建多个实例导致资源的浪费或者状态不一致的问题。在C++中,通常通过以下步骤来实现: 1. **私有化构造函数**:为了确保外部不能直接通过new关键字实例化单例...

    23钟设计模式之单例模式

    单例模式是一种常用的设计模式,它的核心思想是在整个应用程序中,一个类只能有一个实例存在。单例模式常用于控制资源的共享,例如数据库连接池、日志服务等。单例模式有多种实现方式,常见的包括懒汉式、饿汉式以及...

    设计之模式之单例(Singleton)

    - 单例模式的核心思想是限制类的实例化过程,只允许创建一个唯一的实例。 - 这个唯一的实例通常被静态方法管理,以保证在任何情况下都只有一个实例存在。 - 全局访问点使得代码可以在任何地方通过统一的方式获取...

    singleTon单例模式的创建

    ### SingleTon单例模式的创建 #### 一、单例模式概述 单例模式是一种常用的软件设计模式,它确保一个类只有一个实例,并提供一个全局访问点。这种模式通常用于那些需要频繁实例化然后销毁的对象,或者创建对象需要...

    Singleton(单例模式)

    在Java应用中,单例对象能保证在一个...3、有些像交易所的核心交易引擎,控制着交易流程,如果该类可以创建多个的话,系统完全乱了,只有使用单例模式,才能保证核心交易服务器独立控制整个流程。 CSDN代码的详细解释。

    深入浅出单例Singleton模式

    单例模式是一种在软件设计中常见的设计模式,它的核心目标是确保一个类只有一个实例,并提供一个全局访问点。在Java等面向对象编程语言中,单例模式常用于控制资源的共享,如全局配置、数据库连接池、日志服务等。...

    设计模式之单例模式源码demo

    单例模式是软件设计模式中的经典模式之一,其主要目的是控制类的实例化过程,确保在应用程序的整个生命周期中,某个类只有一个实例存在。这样的设计通常适用于那些需要频繁创建和销毁,但资源消耗较大的对象,如...

    C++实现Singleton单例模式

    C++实现Singleton单例模式 本文档将详细介绍如何使用C++语言实现设计模式中的单例模式。单例模式是一种常用的设计模式,它可以确保一个类只能实例化一次。 单例模式的定义: 单例模式是一种创建型模式,它可以确保...

    Java设计模式之单例模式的七种写法

    Java设计模式之单例模式的七种写法 单例模式是一种常见的设计模式,它确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机的驱动程序对象常...

    singleton单例模式1

    "singleton单例模式1" 单例设计模式是软件设计模式中的一种,目的是确保某个类只能有一个实例,并提供一个全局的访问点来访问这个实例。 首先,单例模式的要点是:① 某个类只能有一个实例。构造器私有化。② 它...

    设计模式——单例模式

    懒汉式单例模式则是在第一次调用 `getInstance()` 方法时才创建实例,实现了真正的按需创建。但由于多线程环境下可能出现多个实例,因此需要进行同步控制。 ```java public class Singleton { private static ...

    c++-设计模式之单例模式(Singleton Pattern)

    单例模式(Singleton Pattern)是一种创建型设计模式,确保一个类只有一个实例,并提供一个全局访问点。这种模式常用于需要全局共享资源的场景,比如配置管理、日志记录等。 单例模式的组成 私有构造函数:防止外部...

    java模式之单例模式

    java模式之单例模式: 单例模式确保一个类只有一个实例,自行提供这个实例并向整个系统提供这个实例。 特点: 1,一个类只能有一个实例 2,自己创建这个实例 3,整个系统都要使用这个实例 例: 在下面的对象图...

    java Singleton单例模式

    Java中的Singleton(单例模式)是一种常用的软件设计模式,它保证了类只有一个实例,并提供一个全局访问点。这种模式在需要频繁创建和销毁对象的场景中特别有用,因为它可以节省系统资源,例如数据库连接或者线程池...

    单例模式 Singleton Pattern

    单例模式是一种常见的设计模式,属于创建型模式之一。这种模式的核心在于确保某个类只有一个实例存在,并且提供一个全局访问点来获取该实例。单例模式在Java开发中尤其常见,因为它能够帮助开发者控制对象的创建过程...

    单例模式(singleton)

    实现单例模式的关键在于防止其他对象通过常规构造函数创建新的实例。这通常通过私有化构造函数和提供一个公共静态方法(称为单例工厂方法)来实现。在Java中,单例模式的实现有多种方式: 1. 饿汉式(Static ...

    Singleton pattern单例模式应用

    ### Singleton Pattern 单例模式应用详解 #### 一、单例模式概述 单例模式(Singleton Pattern)是一种常用的软件设计模式,在系统中确保某个类只有一个实例,并提供一个全局访问点。这种模式通常用于控制资源的...

    设计模式之单例模式

    单例模式确保无论在程序的任何地方,只要通过特定方式请求创建该类的对象,始终只会返回同一个实例。这种模式可以避免对资源的浪费,提高性能,并且方便在全局范围内进行状态的管理和协调。 单例模式的核心思想是...

Global site tag (gtag.js) - Google Analytics