博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式之五:单件模式(巧克力工厂锅炉 模拟流程)
阅读量:4310 次
发布时间:2019-06-06

本文共 2189 字,大约阅读时间需要 7 分钟。

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

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

工程名称:SingletonPattern(eclipse) 下载目录: , 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 }

转载于:https://www.cnblogs.com/damonhuang/archive/2012/09/20/2694670.html

你可能感兴趣的文章
php常用正则表达式
查看>>
ie7浏览器兼容问题
查看>>
matplotlib动态图subplots()和subplot()不同及参数
查看>>
python,shell,locale,charset
查看>>
CSS基础知识点笔记
查看>>
2016中国大学生程序设计竞赛(长春)-重现赛 1010Ugly Problem 回文数 模拟
查看>>
冒泡、选择、插入排序
查看>>
从小白到区块链工程师:第一阶段:Go语言的控制台输入和输出(3)
查看>>
iOS开发系列--通知与消息机制
查看>>
16.jQuery属性操作
查看>>
sonar安装
查看>>
使用chrome开发者工具中的performance面板解决性能瓶颈
查看>>
bzoj:3392: [Usaco2005 Feb]Part Acquisition 交易
查看>>
MyBatis源码解析(一)
查看>>
JavaScript基础
查看>>
迪丽瑟斯特产网——选题报告(团队)
查看>>
linux下编译upx 3.93
查看>>
图像滤波
查看>>
猜年龄游戏
查看>>
博客园在线运行及一键转载
查看>>