单例模式demo
package com.test;
/**
*
* @author Administrator
*我的发现:调用这个的时候,不能直接实例化了;需要=null;然后get; 这样安全些;
*然后仔细找了下单例模式的解释,发现是这样的;单例模式要线程安全,有单独且唯一的一个例子;
*所以重新了构造方法,改成了安全的private,然后加了一个例子,setget方法(set方法干掉了、),
*这里是饿汉式单例模式,在类初始化的时候就新实例化了一个唯一的实例了;
*
*注: 单例模式有以下特点:
1、单例类只能有一个实例。
2、单例类必须自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。
单例模式的写法有好几种,这里主要介绍三种:懒汉式单例、饿汉式单例、登记式单例(略)。
*/
public class SingletonClass {
//饿汉式:
/*
private SingletonClass() {}
private static final SingletonClass instance = new SingletonClass();
public static SingletonClass getInstance() {
return instance;
}
*/
//懒汉式:
/*
private SingletonClass() {}
private static SingletonClass instance = null;
public static SingletonClass getInstance() {
instance = new SingletonClass();
return instance;
}
*/
//懒汉式在getInstance方法上+同步:
/*
private SingletonClass() {}
private static SingletonClass instance = null;
public static SingletonClass getInstance() {
if(instance==null){
instance = new SingletonClass();
}
return instance;
}
*/
//懒汉式+双重检查锁定
/*
private SingletonClass() {}
private static SingletonClass instance = null;
public static SingletonClass getInstance() {
if(instance==null)
synchronized (SingletonClass.class) {
if(instance==null){
instance = new SingletonClass();
}
}
return instance;
}
*/
//静态内部类
//(既实现了线程安全,又避免了同步带来的性能影响)
private static class LazyHolder {
private static final SingletonClass INSTANCE = new SingletonClass();
}
private SingletonClass() {
}
public static final SingletonClass getInstance() {
return LazyHolder.INSTANCE;
}
}
单例模式demo的更多相关文章
- PHP单例模式 demo
<?php class single{ static public $db; private function __construct(){ }; static function getinst ...
- 单例模式 demo
// 用单例模式实现自定义颜色类 public class MyColor { private static MyColor _redColor = null; public static MyCol ...
- 一个简单的单例模式Demo
/** * @author :nx014924 * @date :Created in 5/30/2021 1:09 PM * @description: * @modified By: * @ver ...
- 23种设计模式--单例模式-Singleton
一.单例模式的介绍 单例模式简单说就是掌握系统的至高点,在程序中只实例化一次,这样就是单例模式,在系统比如说你是该系统的登录的第多少人,还有数据库的连接池等地方会使用,单例模式是最简单,最常用的模式之 ...
- C# 设计模式 - 单例模式 演示
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- jieba分词单例模式及linux权限不够情况下tmp_dir自定义
在linux环境下,没有root权限的情况下,有时会碰到如下问题: Building prefix dict from the default dictionary ... Loading model ...
- volatile禁止重排使用场景与单例模式的Double Check Lock
普通单例模式Demo public class Demo{ private static Demo INSTANCE; private Demo(){} public static Demo getI ...
- 设计模式之单例模式的简单demo
/* * 设计模式之单例模式的简单demo */ class Single { /* * 创建一个本类对象. * 和get/set方法思想一样,类不能直接调用对象 * 所以用private限制权限 * ...
- 设计模式之单例模式及应用demo
单例模式是创建型模式之一. 单例模式顾名思义是单例的,也就是只有一个实例化对象,这都来源于它的私有化构造函数. 单例模式特点: 1.单例类只能有一个实例. 2.单例类必须自己创建自己的唯一实例. 3. ...
随机推荐
- 复旦高等代数 I(17级)每周一题
本学期将继续进行高等代数每周一题的活动.计划从第二教学周开始,到第十六教学周为止(根据法定节假日安排,中间个别周会适当地停止),每周的周末将公布1-2道思考题,供大家思考和解答.每周一题通过“谢启鸿高 ...
- jQuery validator plugin之概要
jQuery validator 主页 github地址 demo学习 效果: Validate forms like you've never validated before! 自定义Valida ...
- Pandas 基础(6) - 用 replace() 函数处理不合理数据
首先, 还是新建一个 jupyter notebook, 然后引入 csv 文件(此文件我已上传到博客园): import pandas as pd import numpy as np df = p ...
- ios外包公司——技术分享:手机应用开发步骤
1. 确定你的创意 您的创意是否有人做过,如果有类似的app,那就要多多考虑,争取超越并且有一些独特的优化设计在其中 2. 定位应用 通过苹果的人机界面指南(Human Interface Guide ...
- pycharm 倒入request包方法(新手)
1.先安装request模块,在pycharm import,但是怎么也倒不进去,咨询了开发,原来需要把包倒入到pycharm 编译器里面才可以import 成功,具体操作步骤如下 首先确认下自己电脑 ...
- 《SQL 基础教程》第三章:聚合和排序
这一章节主要讲了三方面的内容: 数据的汇总操作a. 聚合函数b.分组操作 给汇总操作指定条件 对汇总结果进行排序 COUNT()等聚合函数 定义: 输入多行,输出一行的函数称为聚合函数 功能: 用于对 ...
- Flask之勾子,错误捕获以及模板语法
请求勾子 在客户端和服务器交互的过程中,有些准备工作或扫尾工作需要处理,比如: 在请求开始时,建立数据库连接: 在请求开始时,根据需求进行权限校验: 在请求结束时,指定数据的交互格式: 为了让每个视图 ...
- Session&Cookie(Introduction、Application)
一Session 1概念: (1)session是会话,是同一连接者所有页面公有的内置对象 (2)session是一段时间,从session创建开始,到session销毁结束,默认时间为30分钟( ...
- 【转载】如何将本地文件上传到github托管
转自:http://www.cnblogs.com/babywin/p/6073124.html 清楚明白.
- c函数创建文件和路径
bool NewFileName(const char* filename) { size_t len; < (len = strlen(filename))) { char* tmpbuf, ...