单例模式

【理论知识】单例模式(懒汉式+饿汉式+枚举) 软件设计模式(Software Design Pattern) 又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。也就是说,它是解决特定问题的一系列套路,是前辈们的代码设计经验的总结,具有一定的普遍性,可以反复使用。其目的是为了提高代码的可重用性、代码的可读性和代码的可靠性。... 阅读详情
单例模式 
namespace 单例模式
{
    class program
    {
        static void Main(string[] args)
        {
            sington s = new sington();
            s.returnstring();
        }
    }
    class sington
    {
        public sington()
        {
        }
        public void returnstring()
        {
            Console.WriteLine("我是单例模式");


        }
    }
}
分析:  普通的类和系统的类我们实例化的时候是利用类里面的无参构造函数,如果没有无参构造类没有办法实例化  有的人可能会问,我们自定义类的时候没有写无参构造函数时 也可以进行实例化啊,你怎么会说没有无参构造函数不能进行实例化,其实原理是这样的,当我们自定义一个类的时候不写无参构造函数,这时候我们在进行实例化的时候系统会为我们写一个无参构造函数,如果我们在写类的时候显示写出无参构造函数,系统就不会为我们在提供一个默认的无参构造函数。
(扩展:其实利用无参构造函数实例化,原理是因为反射,  反射必须要有无参构造函数,EF框架原理也用到反射了,这些知识你们可以了解下)


上面的例子是普通的类进行实例化,这样写不能保证一个类只能产生一个对象,我们可以实例化很多对象比如:  sington s = new sington();
             sington d = new sington();
             sington f = new sington();
             这样写就有多个对象,多个对象有时候不能保证线程安全。
 下面我们分析怎样才能产生一个对象呢???
 根据上面的分析我们知道一个类产生多个对象的原因是因为外界可以操作这个对象,在外界就把这个对象实例化出多个,怎样才能避免外部直接访问这个对象的实例呢??  外界实例化对象是因为类里面有个公开的无参构造,外界利用这个公开的无参构造可以实例化多个对象,那么我们把这个无参构造不让外界访问不就行了吗??  有的同学可能想到了,对没错就是把访问权限public改成private  这样我们就能实现外界无法直接操作这个无参构造 也就说明 外界不能直接进行实例化了?
 但是外界不能直接访问这个无参构造,我们怎样用这个对象呢??嗯没错我们可以写一个方法
 把这个对象返回到外界,这个外界得到的对象就是唯一的对象,外界就能访问这个类的属性方法了
 例如: 
  class program
    {
        static void Main(string[] args)
        {
           Sington.ReturnInstance().returnstring();
        }
    }


    class Sington
    {
        private static Sington sington;
        //无参构造私有化
        private Sington()
        {


        }
        //把这个对象返回到外界供外界访问
        public static Sington ReturnInstance() {
            sington =new Sington();
            return sington;
        }
        public void returnstring()
        {
            Console.WriteLine("我是单例模式");


        }
    }
}
结果:我是单例模式




总结一下把:  关于上面提到的反射,线程问题。在实际开发中线程用的并不是很多(以我现在的理解)游戏开发中线程用到比较多,实际开发中反射用的还是比较多呢,为什么这样说呢?
因为很对框架底层都用到反射了,比如EF框架  我们用MVC+EF框架的时候,在视图页面利用
foreach (var item in collections)  
  {  
    显示的字段
    }  
   这个里面就是用到反射了


   反射的概念:就是程序运行时可以利用反射技术可以获取类相关信息动态执行一些方法
   属性等
Unity框架学习【单例模式基类】{个人单例模式总结,框架单例模式总结} 这三天花了点时间,学习了B站唐老师的框架,里面有很多知识都有很强的复用性。 即,完成一次之后的很多工作都可以节省,而且优化整个程序的结构。 首先就是唐老师的课程都是递进式的,也就是前面的课程会很大程度的影响到后面的课程,而单例模式,是我目前使用最多的模式【要加紧学习新的设计模式】,例如在我的一本介绍《游戏设计模式》课本里面就有明确的写到。 “唯独单例模式,我们是要考虑怎么尽可能少的去使用他” 然后... 阅读详情

相关推荐

HA集群 执行 hdfs haadmin -transitionToActive 失败

最近把一个单NameNode集群变更为HA集群,过程中都很顺利,nn1和nn2两个NameNode都显示standby状态,但是把nn1或者nn2切换到active状态时就会报错抛异常。 查看master上namenode启动日志,如下: Incompatible clusterID for journal Storage Directory /home/hadoop-zero/bigdat...

qq_34727158的博客 1764

单例模式详解

一、什么是单例模式 单例模式是Java中最简单的设计模式之一。这种类型的设计模式属于创建者模式,它提供了一种访问对象的最佳方式。 这种设计模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一对象的方式,可以直接访问,不需要实例化该类的对象。 二、单例模式的结构 单例类:只能创建一个实例的类 访问类:使用单例类的类 三、单例模式分类 饿汉式:类加载就会导致该单实例对象被创建 懒汉式:类加载不会导致该单实例对象被创...

欢迎一起学习交流 2万+

SPSS回归分析(线性:一元(简单)和多重;非线性logistic)

SPSS线性回归分析回归分析一、线性模型(针对连续因变量,线性关系)(一)简单线性回归(一元线性回归)1、绘制散点图2、建立简单(一元)线性回归模型3、建立模型后,检查预测结果(二)多重回归分析1、绘制矩阵分布散点图(论文专用你懂的)2、建立多重回归模型point 1:自变量加入方法:逐步(步进)法3、建立模型后,检查预测结果二、非线性模型(将非线性问题转换为线性问题)1、logistic分析的回归模型1.1 建立回归模型1.2 利用回归模型进行预测 根据之前的学习,通过评价实验得到了主观数据, 通过 描述

weixin_44394352的博客 5万+

一文带你彻底搞懂设计模式之单例模式!!由浅入深,图文并茂,超超超详细的单例模式讲解!!

本篇文章通过图文形式,由浅入深,详细讲解了设计模式中的单例模式的应用

祝你身体健康,美满幸福 1万+

Windows: 深入剖析pip install SSLError与SSL模块缺失的根源及系统级修复

本文深入分析Windows系统下pip install SSLError与SSL模块缺失的根本原因,提供系统级修复方案。从Python安装包缺失SSL支持、OpenSSL库冲突到环境变量配置问题,详细讲解四大成因及对应的解决方案,包括重新安装Python、手动修复OpenSSL依赖等实用技巧,帮助开发者彻底解决HTTPS连接问题。

weixin_28595749的博客 459

TMS320F280049C 学习笔记4 Led_ex1_blinky 初始化函数及系统时钟

承接上一篇学习笔记,这次开始实际运行例程。本文概述了280049C的第一个实验 Led灯闪烁。同时也总结了系统的初始化函数和时钟配置。

whyorwhnt的专栏 7035

单例模式(单例设计模式)详解

在有些系统中,为了节省内存资源、保证数据内容的一致性,对某些类要求只能创建一个实例,这就是所谓的单例模式。 单例模式的定义与特点 单例(Singleton)模式的定义:指一个类只有一个实例,且该类能自行创建这个实例的一种模式。例如,Windows 中只能打开一个任务管理器,这样可以避免因打开多个任务管理器窗口而造成内存资源的浪费,或出现各个窗口显示内容的不一致等错误。 在计算机系统中,还有 Windows 的回收站、操作系统中的文件系统、多线程中的线程池、显卡的驱动程序对象、打印机的后台处理服务、应用程

GJ_007的博客 4万+

海思3516DV300智能算法实现

海思3516DV300智能算法实现

xiaoning132的专栏 938

Java实现单例模式

饿汉模式,懒汉模式,设计模式

weixin_56738054的博客 3492

【学习系列】SAP RAP 18:Unmanaged场景开发示例-基本数据更新

本文介绍了在SAP RAP中unmanaged模式下从0到1的开发步骤。unmanaged模式下需要自行实现数据更新、权限检查等逻辑,适用于操作现有数据库表或复杂业务场景。文章以两层的采购订单对象为例,详细说明了创建技术对象(表、视图、行为定义等)的过程,并重点阐述了如何实现CRUD相关方法的核心逻辑。通过创建缓冲类来处理交互阶段和保存阶段的数据操作,确保事务一致性。完整代码展示了抬头层级的增删改查功能实现,为后续明细层级的开发奠定了基础。

DeveloperMrMeng的博客 642

无人机:DJI Matrice 600 Pro_(8).DJI_Matrice_600_Pro_负载能力

在一些高级应用场景中,可能需要自定义开发负载设备。

zhubeibei168的博客 1341

单例模式的实现

当在应用程序中需要控制资源共享、进行配置管理和日志记录等操作时,一种常见的需求是希望通过一个全局访问点,让程序无论在哪个地方,只要能够访问到,就可以通过这个全局访问点,来获取相关实例信息。对于懒汉式单例模式,单例实例在第一次被使用时构建,延迟初始化,相对资源利用率高。如果学过Spring的小伙伴,应该清楚,Spring框架中,默认情况下管理的Bean是单例的,这也意味着Spring容器在创建和管理Bean时,每个Bean只会有一个实例,并且这个实例会被所有需要它的地方共享。:避免重复创建实例,节省资源。

Hardy Army的博客 1613

【干货】SAP特殊库存:Q库存(项目库存)全解析,搞懂ETO模式的核心!

在 SAP 系统中,

我小时候很黑的博客 912

C++单例模式详解

C++ 单例模式详解,懒汉式单例,饿汉式单例

Marvek的博客 5330

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

什么是单例模式?单例模式详解

个人印象笔记地址:https://app.yinxiang.com/fx/eaa22560-57a4-4554-8de8-b5f254090d37 单例模式介绍 1.1 模式说明 实现1个类只有1个实例化对象 & 提供一个全局访问点 1.2 作用(解决的问题) 保证1个类只有1个对象,降低对象之间的耦合度 1.3 工作原理 在Java中,我们通过使用对象(类实例化后)来操作这些类,类实例化是通过它的构造方法进行的,要是想实现一个类只有一个实例化对象,就要对类的构造方法做改变。 单

weixin_43373417的博客 2125

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

单例模式笔记

单例模式 简述: 单例模式是一种常用的软件设计模式。这种模式属于创建型模式,在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例,该模式的类提供了一种访问其唯一的对象的方式。 饿汉式单例模式 简述:在类加载之前唯一实例对象已经创建完成 实现类: package com.wu.Singleton; public class SingletonDemo { private String name; private int age ; //

一夜星尘 9384

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

单例模式《单例模式概念、什么时候能用到单例模式、单例模式的好处》

坚持原创输出,点击蓝字关注我吧作者:清菡博客:oschina、云+社区、知乎等各大平台都有。目录一、单例模式的概念1.类每次实例化的时候都会创建一个新的对象,如果要求类只能被实例化一次该怎...

清菡的博客 1481

单例模式以及反射对单例模式的破坏及防御

单例模式是 Java 中非常重要的设计模式,它确保了类只有一个实例,但由于 Java 的反射机制,饿汉式、懒汉式、双重校验锁和静态内部类实现的单例模式都可以被反射轻松破坏。通过在构造方法中添加实例校验机制,我们可以有效防止反射创建多个实例。饿汉式:即使不使用,也会提前加载单例,浪费内存。懒汉式:通过实现线程安全的懒加载,但并发性能较低。双重校验锁:提高了并发性能,使用volatile防止指令重排问题。静态内部类:相较于双重校验锁更加优雅,实现了懒加载和线程安全。

weixin_54574094的博客 1905

小谈单例模式 | 单例模式的八种写法?

看了这篇文章,你能和面试官畅谈单例模式一、前言二、单例模式最通俗的解释来一个简单的例子三、实现单例模式的8种写法1.饿汉式(静态常量)(可用)2.饿汉式(静态代码块)(可用)3.懒汉式(线程不安全)(不可用)4.懒汉式(线程安全)(不推荐)5.懒汉式(线程不安全)(不可用)6.懒汉式(双重检查)(推荐面试使用)7.懒汉(静态内部类方式)(可用)8.枚举 推荐在项目中使用四、常见面试问题五、关于几种...

qq_35764460的博客 1690

单例模式及破解单例模式

单例模式:一个类自己负责创建自己的对象,同时确保系统中该对象只会被创建一个! 特点: 在整个系统中只能有一个该类的实例(必须确保构造器私有,避免其他类new出该类的对象) 他必须自行创建这个实例(在代码对应的类中自己编写实例化逻辑) 它必须自行向整个系统提供这个实例(对外提供实例化方法,外面的类想要这个实例的对象随时可以调用) 单例模式的饿汉式 public class Person { private String name; private String age; //

weixin_49149614的博客 680

java单例模式、Scala单例模式

单例java的两种单例模式Scala的单例模式 java的两种单例模式 /** * 单例 * * 一个类只能创建一个对象, * 定义的步骤: * 恶汉式: * 1、私有构造器 * 2、提供一个public的static的返回值为本类引用的方法 * 3、为了给第2步中提供实例,创建一个private的s...

Baiyabai的博客 1236

什么是单例模式

单例模式: 1.保证类在内存中只能有一个对象 单例模式分为: 1.懒汉式:类一加载就创建对象 2.饿汉式:用的时候,才去创建对象 相关经验: 饿汉式 (是不会出现问题的单例模式) 懒汉式 (可能会出现问题的单例模式) (1.)懒加载(延迟加载) (2.)线程安全问题 1.)是否多线程环境 是 2.)是否有共享数据 是 3.)是否有多条语句操作共享数据 是 举例: 1.饿汉模...

Good_Luck_Li的博客 7758

单例模式的应用

单例模式定义: 单例模式(Singlleton Pattern) 是指确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点。 一、饿汉式 优点:执行效率高,性能高,没有任何的锁 缺点:某些情况下,可能会造成内存浪费 二、懒汉式 优点:节省了内存 缺点:线程不安全的问题 三、线程式 四、 ...

qq_43170213的博客 1981

单例模式及单例模式的应用

单例模式(Singleton),也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息。这种方式简化了在复杂环境下的配置管理。 ...

xpdbaba的博客 577
下一篇: java的工厂模式
_徐林
博客等级 码龄9年 6粉丝 28原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值