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

    注意:

    饿汉式与懒汉式的区别是:饿汉式在初始化单例对象时,就已经实例化了,而懒汉式只有在第一次调用工厂初始化方法的时候才实例化,以后不再进行实例化
  • 相关阅读:
    [Effective C++, 学习总结] 01 视C++为一个语言联邦
    【原创】从“心”开始
    [C++, Basic, 02] 控制对象初始化与析构的顺序
    电信PPPoE拨号失败,获取不到IP
    IPV6学习笔记
    win10提示目前无法访问SmartScreen
    IBM服务器进入IMM
    python把文字转成语音
    python爬虫获取贴吧图片
    ibm x3550更换主板后无法加载系统引导
  • 原文地址:https://www.cnblogs.com/eaglezb/p/5964912.html
Copyright © 2011-2022 走看看