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

    注意:

    饿汉式与懒汉式的区别是:饿汉式在初始化单例对象时,就已经实例化了,而懒汉式只有在第一次调用工厂初始化方法的时候才实例化,以后不再进行实例化
  • 相关阅读:
    状态压缩 + 暴力 HDOJ 4770 Lights Against Dudely
    简单几何(推公式) UVA 11646 Athletics Track
    简单几何(四边形形状) UVA 11800 Determine the Shape
    简单几何(求交点) UVA 11437 Triangle Fun
    计算几何模板
    简单几何(相对运动距离最值) UVA 11796 Dog Distance
    简单几何(求划分区域) LA 3263 That Nice Euler Circuit
    覆盖的面积 HDU
    Desert King 最小比率生成树 (好题)
    约会安排 (区间合并)毒瘤题
  • 原文地址:https://www.cnblogs.com/eaglezb/p/5964912.html
Copyright © 2011-2022 走看看