zoukankan      html  css  js  c++  java
  • java之设计模式

    设计模式分类比较多,这里先学习单例模式

    单例模式:在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。分为饿汉式、赖汉式

    我们上下代码:

     1 package com.learn.chap03.sec18;
     2 
     3 public class Singleton1 {
     4     
     5     /**
     6      * 构造方法私有
     7      */
     8     private Singleton1(){
     9         
    10     }
    11     
    12     /**
    13      * 饿汉式单例实现
    14      */
    15     private static final Singleton1 single1 = new Singleton1();
    16     
    17     /**
    18      * 静态工厂方式
    19      */
    20     public static Singleton1 getInstance(){
    21         return single1;
    22     }
    23 
    24 }
     1 package com.learn.chap03.sec18;
     2 
     3 public class Singleton2 {
     4     /**
     5      * 构造方法私有
     6      */
     7     private Singleton2(){
     8         
     9     }
    10     
    11     /**
    12      * 赖汉式单例实现 在第一次调用的时候实例化
    13      */
    14     private static Singleton2 single;
    15     
    16     /**
    17      * 工厂
    18      */
    19     public synchronized static Singleton2 getInstance(){
    20         if(single==null){
    21             // 第一次调用的时候实例化
    22             System.out.println("第一次调用的时候实例化");
    23             single = new Singleton2();
    24             
    25         }
    26         return single;
    27     }
    28 }
     1 package com.learn.chap03.sec18;
     2 
     3 public class TestSingleton {
     4     
     5     public static void main(String[] args) {
     6         Singleton1 singleton1 = Singleton1.getInstance();
     7         Singleton1 singleton2 = Singleton1.getInstance();
     8         System.out.println("饿汉式:"+(singleton1 == singleton2));
     9         
    10         TestSingleton t1 = new TestSingleton();
    11         TestSingleton t2 = new TestSingleton();
    12         System.out.println((t1 == t2));
    13         
    14         Singleton2 singleton3 = Singleton2.getInstance();
    15         Singleton2 singleton4 = Singleton2.getInstance();
    16         System.out.println("懒汉式:"+(singleton3 == singleton4));
    17         
    18     }
    19         
    20 }

    运行结果

    饿汉式:true
    false
    第一次调用的时候实例化
    懒汉式:true

    注意:

    饿汉式与懒汉式的区别是:饿汉式在初始化单例对象时,就已经实例化了,而懒汉式只有在第一次调用工厂初始化方法的时候才实例化,以后不再进行实例化
  • 相关阅读:
    MongoDB 基础
    类加载流程,类加载机制及自定义类加载器详解
    Object中有哪些方法及其作用
    Intellij IDEA 导入Maven项目
    用IDEA开发Spring程序
    深入浅出 Java 8 Lambda 表达式
    UUID.randomUUID()简单介绍
    json字符串转成 json对象 json对象转换成java对象
    字符串转 Boolean 的正确方式
    获取JSON中所有的KEY
  • 原文地址:https://www.cnblogs.com/eaglezb/p/5964912.html
Copyright © 2011-2022 走看看