• 设计模式之五:单件模式(巧克力工厂锅炉 模拟流程)


    单件模式:确保一个类只有一个实例,并提供一个全局访问点。(巧克力工厂锅炉 模拟流程)

    java中实现单件模式需要私有的构造器、一个静态方法和一个静态变量。

    工程名称:SingletonPattern(eclipse) 下载目录:http://www.cnblogs.com/jrsmith/admin/Files.aspx , SingletonPattern.zip;

     1 package com.jyu.singletonpattern;
     2 
     3 /**
     4  * "双重检查枷锁":首先检查是否实例已经创建了,如果尚未创建,"才"进行同步。
     5  * 这样一来只有第一次会同步,这正是我们想要的。
     6  * 注:双重检查枷锁不适用于1.4及更早版本的java
     7  * @author root
     8  *
     9  */
    10 public class Singleton {
    11 
    12     /*volatile关键词确保:当uniqueInstance变量被初始化成Singleton实例时,多个线程正确地处理uniqueInstance*/
    13     private volatile static Singleton uniqueInstance;
    14     private int count;
    15     
    16     private Singleton(){
    17         count += 1;
    18         System.out.println("双重检查枷锁..." + count);
    19     }
    20     
    21     public static Singleton getInstance(){//检查实例,如果不存在,就进入同步区块
    22         if(uniqueInstance == null){       //注意,只有第一次才彻底执行这里的代码
    23             synchronized(Singleton.class){
    24                 if(uniqueInstance == null){ //进入区块后,在检查一次。如果仍是null,才创建实例。
    25                     uniqueInstance = new Singleton();
    26                 }
    27             }
    28         }
    29         return uniqueInstance;
    30     }
    31 
    32     public int getCount() {
    33         return count;
    34     }
    35 
    36     public void setCount(int count) {
    37         this.count = count;
    38     }
    39     
    40 }
     1 package com.jyu.singletonpattern;
     2 
     3 public class test {
     4 
     5     /**
     6      * @param args
     7      */
     8     public static void main(String[] args) {
     9 
    10         Singleton singleton = Singleton.getInstance();
    11         /*Singleton singleton2 = Singleton.getInstance();
    12         Singleton singleton3 = Singleton.getInstance();
    13         Singleton singleton4 = Singleton.getInstance();
    14         Singleton singleton5 = Singleton.getInstance();
    15         Singleton singleton6 = Singleton.getInstance();
    16         Singleton singleton7 = Singleton.getInstance();
    17         Singleton singleton8 = Singleton.getInstance();
    18         Singleton singleton9 = Singleton.getInstance();
    19         Singleton singleton0 = Singleton.getInstance();
    20         Singleton singleton10 = Singleton.getInstance();
    21         Singleton singleton11 = Singleton.getInstance();
    22         Singleton singleton12 = Singleton.getInstance();*/
    23     }
    24 
    25 }
  • 相关阅读:
    洛谷 P1291 [SHOI2002]百事世界杯之旅 解题报告
    洛谷 P1338 末日的传说 解题报告
    洛谷 P3952 时间复杂度 解题报告
    vector-erase
    STL之--插入迭代器(back_inserter,inserter,front_inserter的区别
    STL之--插入迭代器(back_inserter,inserter,front_inserter的区别
    vector-end
    vector-end
    vector-empty
    vector-empty
  • 原文地址:https://www.cnblogs.com/damonhuang/p/2694670.html
Copyright © 2020-2023  润新知