目的:

保证一个类只创建唯一一个对象。
例如:配置文件

实现:

1. 构造函数私有化。

无法new,则:
类外不可创建对象
类不可被继承

2. 类的静态成员

属于类,而不属于对象。
不需要通过对象或者指向对象的指正引用。
静态方法可以访问直接访问静态对象。
类名加点直接访问静态成员,不通过对象来访问。(访问权限可以的情况下)

3. 类的静态方法在引用时遵循访问权限
  1. 静态方法可调用静态变量
  2. 要遵循访问权限
  3. 静态方法需要 类名.方法名 访问,不是对象

设计模式之禅中的介绍

  1. 这个模式是很有意思,而且比较简单,但是我还是要说因为它使用的是如此的广泛,如此的有人缘,单例就是单一、独苗的意思,那什么是独一份呢?你的思维是独一份,除此之外还有什么不能山寨的呢?我们举个比较难复制的对象:皇帝。
  2. 中国的历史上很少出现两个皇帝并存的时期,是有,但不多,那我们就认为皇帝是个单例模式,在这个场景中,有皇帝,有大臣,大臣是天天要上朝参见皇帝的,今天参拜的皇帝应该和昨天、前天的一样(过渡期的不考虑,别找茬哦),大臣磕完头,抬头一看,嗨,还是昨天那个皇帝,单例模式,绝对的单例模式,
    先看类图:
代码实现:
package com.cbf4life.singleton3;
/**
* @author cbf4Life cbf4life@126.com
* I'm glad to share my knowledge with you all.
* 通用单例模式
*/
public class SingletonPattern {
private static SingletonPattern singletonPattern= null;
//限制住不能直接产生一个实例
private SingletonPattern(){ }
public SingletonPattern getInstance(){
if(this.singletonPattern == null){ //如果还没有实例,则创建一个
this.singletonPattern = new SingletonPattern(); }
return this.singletonPattern; }
}
  1. 假如现在有两个线程 A 和线程 B,线程 A 执行到 this.singletonPattern = new SingletonPattern(),正在申请内存分配,可能需要 0.001 微秒,就在这 0.001 微秒之内,线程 B 执行到 if(this.singletonPattern == null),你说这个时候这个判断条件是 true 还是 false?是 true,那然后呢?线程 B 也往下走,于是乎就在内存中就有两个 SingletonPattern 的实例了,看看是不是出问题了?
package com.cbf4life.singleton3;
/**
* @author cbf4Life cbf4life@126.com
* I'm glad to share my knowledge with you all.
* 通用单例模式
*/
@SuppressWarnings("all")
public class SingletonPattern {
private static final SingletonPattern singletonPattern= new
SingletonPattern();
//限制住不能直接产生一个实例
private SingletonPattern(){ }
public synchronized static SingletonPattern getInstance(){
return singletonPattern; }
}
  1. 直接 new 一个对象传递给类的成员变量 singletonpattern,你要的时候 getInstance()直接返回给你,解决问题!

单身模式(Singleton)相关推荐

  1. 11单件模式(Singleton Pattern)

    创建型模式---单件模式(Singleton Pattern) 动机(Motivation):     在软件系统中,经常有这样一些特殊的类,必须保证它们在系统中只存在一个实例,才能确保它们的逻辑正确 ...

  2. 单例/单体模式(Singleton)

    单例/单体模式(Singleton) 首先,单例模式是对象的创建模式之一,此外还包括工厂模式.单例模式的三个特点: 1,该类只有一个实例 2,该类自行创建该实例(在该类内部创建自身的实例对象) 3,向 ...

  3. Java设计模式 创建模式-单态模式(Singleton)

    2019独角兽企业重金招聘Python工程师标准>>> 定义: Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在. 在很多操作中,比如建立目 ...

  4. Java 单列模式(Singleton)

    单例模式(Singleton) 定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点. 目的:使得类的一个对象成为系统中的唯一实例. 如何保证一个类只有一个实例并且这个实例易于被访问呢? 我们都 ...

  5. 单体模式singleton

    在c++实现单体模式和c#,java有些不同 .h class Param { public:static Param& GetIntance(){return m_param;}static ...

  6. 设计模式学习之单件模式singleton

    定义 单件模式是一种用于确保整个应用程序中只有一个类实例且这个实例所占资源在整个应用程序中是共享的程序设计方法(根据实际情况,可能需要几个类实例).在某些情况下,这种程序设计方法是很有用处的. 单件模 ...

  7. 懒人模式Singleton模式Meyers版本号

    直接看代码: /* Singleton模式保证:在一个程序,,一个类有且只有一个实例.并提供一个访问 它的全局访问点在编程其中.很多情况下,需要确保有一类的一个实例比如: windopws系统中仅仅能 ...

  8. 模式Singleton

    设计模式之Singleton(单态) 定义: Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在. 在很多操作中,比如建立目录 数据库连接都需要这样的单线程操作 ...

  9. 详细介绍javascript中的单体模式singleton(全面)

    一.单体模式描述 1.单体模式是javascript中最基本但又最有用的模式之一,他可能比其他任何模式都常用. 2.这种模式提供了一种将代码组织为一个逻辑单元的手段,这个逻辑单元中的代码可以通过单一的 ...

最新文章

  1. linux valgrind Memcheck--内存检查工具
  2. WWF(Windows Workflow Foundation)开发环境的建立。 .NET 技术前瞻,WWF,Windows,Workflow,Foundation...
  3. 微信运动:抓住用户的小九九,一个都别跑!
  4. java实现多路分发
  5. x265-common.h
  6. 48-如何实现unix2dos功能
  7. 关于SAP S/4HANA里ABAP源代码管理功能的增强
  8. 剑指offer——二进制中1的个数(c++)
  9. matlab圆形器件,计算围绕点+ Matlab的圆形箱
  10. URL中文传值乱码解决方式
  11. 三十七、【获取相机权限】
  12. 互联网平台黑产解密(上)
  13. 【深入浅出精华版视频】-刘意day13思维导图整理
  14. 05_grep-搜索
  15. 好好说说互联网IT行业加班那点儿事
  16. 服务器怎么用固态盘安装系统,服务器使用固态盘安装
  17. 树莓派从入门到放弃之Docker上安装Jellyfin视频服务器
  18. html5微信视频无法播放视频教程,解决微信h5页面视频播放问题实例
  19. 华为ENSP简单实训,仅为学习
  20. 2019年Linux运维工程师的高薪出路在哪

热门文章

  1. 申请苹果IOS开发者步奏
  2. 夺命雷公狗—玩转SEO---72---网站降权与被K如何修复
  3. mac系统文本复制粘贴问题
  4. 【202209-2 何以包邮?】
  5. java处理字符串Patter与Matcher类与其方法详解
  6. js数组中如何随机取出一个值
  7. Java编写汽车租赁系统
  8. 《Spring Cloud微服务和 分布式系统实践》即将印刷和出版
  9. web前端学习笔记:电商网站结构搭建与基础区块制作
  10. excel同一单元格怎么换行_excel表格怎么换行?excel表格中怎么换行?