zoukankan      html  css  js  c++  java
  • 设计模式之五:单件模式(巧克力工厂锅炉 模拟流程)

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

    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 }
  • 相关阅读:
    HDU 1075 What Are You Talking About(字典树)
    HDU 1075 What Are You Talking About (stl之map映射)
    HDU 1247 Hat’s Words(字典树活用)
    字典树HihoCoder
    HDU 1277全文检索(字典树)
    HDU 3294 Girls' research(manachar模板题)
    HDU 3294 Girls' research(manachar模板题)
    HDU 4763 Theme Section(KMP灵活应用)
    Ordering Tasks UVA
    Abbott's Revenge UVA
  • 原文地址:https://www.cnblogs.com/damonhuang/p/2694670.html
Copyright © 2011-2022 走看看