zoukankan      html  css  js  c++  java
  • [设计模式]暂时不考虑多线程的单例模式

    饿汉式单例模式:

     1 package cn.itcast.singleton;
     2     /*
     3     最简单的设计模式就是单例模式 
     4     单个实例的模式,一个类只能生成一个对象,
     5     new或者其他方式最后只能生成一个对象,不能再生成新的对象.
     6     */
     7 public class SingletonTest {
     8     public static void main(String[] args) {
     9         Singleton singleton = Singleton.getInstance();
    10         Singleton singleton2 = Singleton.getInstance();
    11         //判断生成的对象是否是一个对象.
    12         System.out.println(singleton==singleton2);
    13     }
    14 }
    15 class Singleton{
    16     //在Singleton类中声明一个对象.然后在类中向外提供一个得到这个对象的方法
    17     //下面的getInstance()方法是static类型的.要调用的也必须是static类型的.
    18     private static Singleton singleton = new Singleton();
    19     
    20     //单例类Singleton中的构造方法必须是private,不能让外部访问该构造方法.否则无法实现单例模式
    21     private Singleton(){
    22         
    23     }
    24     //这个getInstance()方法必须是static静态的方法,因为这个方法是一个实例方法.
    25     //外部调用实例方法通过该类的对象来调用,但是外部因为该类的构造方法是private的无法得到该类对象
    26     //所以要声明成static静态的方法,通过类名来调用这个实例方法.
    27     public static Singleton getInstance(){
    28         return singleton;
    29     }
    30 }
    31     /*
    32     这种方式(饿汉式)是你在你没有调用Singleton的时候也生成一个singleton对象了.
    33     这种是一定是单例的,第二种(懒汉式)在多线程的情况下可能不是单例的.
    34     */

    懒汉式单例模式

     1 package cn.itcast.singleton2;
     2     /*
     3     最简单的设计模式就是单例模式 
     4     单个实例的模式,一个类只能生成一个对象,
     5     new或者其他方式最后只能生成一个对象,不能再生成新的对象.
     6     */
     7 public class SingletonTest {
     8     public static void main(String[] args) {
     9         Singleton singleton = Singleton.getInstance();
    10         Singleton singleton2 = Singleton.getInstance();
    11         //判断生成的对象是否是一个对象.
    12         System.out.println(singleton==singleton2);
    13     }
    14 }
    15 class Singleton{
    16     //在Singleton类中声明一个对象.然后在类中向外提供一个得到这个对象的方法
    17     //下面的getInstance()方法是static类型的.要调用的也必须是static类型的.
    18     private static Singleton singleton;
    19     //这个地方先不赋值,不赋值肯定不对,就要在你调用getInstance()方法的时候判断这个singleton对象是否为空.
    20     
    21     //单例类Singleton中的构造方法必须是private,不能让外部访问该构造方法.否则无法实现单例模式
    22     private Singleton(){
    23         
    24     }
    25     //这个getInstance()方法必须是static静态的方法,因为这个方法是一个实例方法.
    26     //外部调用实例方法通过该类的对象来调用,但是外部因为该类的构造方法是private的无法得到该类对象
    27     //所以要声明成static静态的方法,通过类名来调用这个实例方法.
    28     public static Singleton getInstance(){
    29         if(singleton == null){
    30             singleton = new Singleton();
    31         }
    32         return singleton;
    33     }
    34 }

     ============================华丽丽的分割线====================================

  • 相关阅读:
    Sqli-labs Less-47 order by后的注入
    Sqli-labs Less-46 order by后的注入
    Sqli-labs Background-9 order by后的injection
    Sqli-labs Less-45 堆叠注入
    jsp,servlet知识点
    jsp页面编码不统一可能会出问题
    jsp页面找不到,jsp页面乱码
    BZOJ 2843: 极地旅行社 lct splay
    2018/3/23 省选模拟赛
    bzoj 4573: [Zjoi2016]大森林 lct splay
  • 原文地址:https://www.cnblogs.com/DreamDrive/p/4005065.html
Copyright © 2011-2022 走看看