一、设计目的:让项目中只显示一个实例对象

二、设计步骤:

  1. 创建一个类;
  2. 构建类类型静态变量;
  3. 定义返回值类为单例类型的静态方法;
  4. 判断静态变量instance是否为空:如果为空,就创建实例,然后给单例类中的字段进行赋值;如果不为空:返回此变量(return instance;)
  5. 单例模式创建成功;

三、项目相关名词或知识点解释

  • 此处类类型:如果当前类为SingleCase,则此静态变量类型也要为SingleCase类型,
  • 即在此处定义的静态变量的类型要和这个当前类的类型相同
  • 定义单例实例变量时,尽量都用instance(实例)来指代,方便以后自己和他人对代码的阅读。
  • 静态变量在内存中只有一个,只占一份儿

四、相关源码

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace SingleCaseModel00
{
/// <summary>
/// 1.创建这么一个类
/// </summary>
class SingleCase
{
//2.构建类类型静态变量
//此处类类型:如果当前类为SingleCase,则次静态变量类型也要为SingleCase类型,
//即在此处定义的静态变量的类型要和这个当前类的类型相同
//定义单例实例变量时,尽量都用instance(实例)来指代,方便阅读
//静态变量在内存中只有一个,只占一份儿
public static SingleCase instance = null;
//10.定义一个字段,用来进行测试
public string name;
//3.定义返回值类为单例类型的静态方法
public static SingleCase getInstance(string n)
{
//4.判断静态变量instance是否为空
if (instance == null)
{
//5.如果为空,就创建实例
instance = new SingleCase();
//6.给单例类中的字段进行赋值
instance.name = n;
}
//7.返回此变量
return instance;
}
//8.如果这个类中还有其他的字段,那么直接在下面写出来即可
//如下:
//public string Name;
//public int Age;
}
class Program
{
static void Main(string[] args)
{
//9.调用上述单例类中方法,测试单例类
SingleCase s1 = SingleCase.getInstance("我是第一次传过来的参数");
SingleCase s2 = SingleCase.getInstance("我是第二次传过来的参数");
Console.WriteLine(s1.name);
Console.WriteLine(s2.name);
Console.ReadKey();
}
}
}

五、结果展示

六、对结果的解释说明

两次输出的结果是一样的,这是因为当第一次传入参数的时候,instance 为空,执行上面的方法后,name的值就变成了“我是第一次传过来的参数”,

当你第二次再次传入参数时,由于静态变量在内存中只有一个,只占一份儿,所以此时instance 已经不为空了,还会直接输出第一个参数是的instance 值,

所以,不管你输入几次参数,输出的结果都会是第一次输出的那个instance 值,这也就是单例模式的机制所在。

Asp.Net 设计模式 之 单例模式的更多相关文章

  1. PHP设计模式之单例模式(数据库访问)

    1.什么是单例模式? 作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统全局地提供这个实例.它不会创建实例副本,而是会向单例类内部存储的实例返回一个引用. 2.单例模式的 ...

  2. 设计模式之单例模式(Singleton)

    设计模式之单例模式(Singleton) 设计模式是前辈的一些经验总结之后的精髓,学习设计模式可以针对不同的问题给出更加优雅的解答 单例模式可分为俩种:懒汉模式和饿汉模式.俩种模式分别有不同的优势和缺 ...

  3. GJM : C#设计模式(1)——单例模式

    感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...

  4. java设计模式之单例模式(几种写法及比较)

    概念: Java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例.饿汉式单例.登记式单例. 单例模式有以下特点: 1.单例类只能有一个实例. 2.单例类必须自己创建 ...

  5. 每天一个设计模式-4 单例模式(Singleton)

    每天一个设计模式-4 单例模式(Singleton) 1.实际生活的例子 有一天,你的自行车的某个螺丝钉松了,修车铺离你家比较远,而附近的五金店有卖扳手:因此,你决定去五金店买一个扳手,自己把螺丝钉固 ...

  6. 设计模式之单例模式的简单demo

    /* * 设计模式之单例模式的简单demo */ class Single { /* * 创建一个本类对象. * 和get/set方法思想一样,类不能直接调用对象 * 所以用private限制权限 * ...

  7. 设计模式之单例模式——Singleton

                        设计模式之单例模式--Singleton 设计意图: 保证类仅有一个实例,并且可以供应用程序全局使用.为了保证这一点,就需要这个类自己创建自己的对象,并且对外有 ...

  8. 10月27日PHP加载类、设计模式(单例模式和工厂模式)、面向对象的六大原则

    加载类可以使用include.require.require_once三种中的任意一种,每个关键字都有两种方法,但是这种方法的缺点是需要加载多少个php文件,就要写多少个加载类的方法.一般也就需要加载 ...

  9. java 23 - 2 设计模式之单例模式

    单例模式:保证类在内存中只有一个对象. 如何保证类在内存中只有一个对象呢?  A:把构造方法私有  B:在成员位置自己创建一个对象  C:通过一个公共的方法提供访问 单例模式之饿汉式: (一进来就造对 ...

随机推荐

  1. Django模板语言(二)

    1,装饰器:在不改变原函数的调用方式情况下为原函数增加一些功能(遵循开放封闭的原则) def outter(fn): def inner(*args, **kwargs): # 可以在执行函数前执行一 ...

  2. SpringMVC_基本配置 --跟海涛学SpringMVC(和自己在项目中的实际使用的对比)

    ☆依赖jar包: 1.Spring框架jar 包: 为了简单,将spring-framework-3.1.1.RELEASE-with-docs.zip/dist/下的所有jar包拷贝到项目的WEB- ...

  3. ios app抓包分析

    1 使用rvictl工具 这是mac下的一条命令.ios usb连mac,然后创建虚拟网络接口. 2 使用wireshark抓包 wireshark可以抓这个虚拟网络接口上的数据包.

  4. 生成器 减少代码行数 map reduce

    map reduce l = [[2, 3], [2, 3, 4]] ll = [2, 3, 4] l = [int(i) for i in set(','.join([','.join([str(i ...

  5. bzoj5333: [Sdoi2018]荣誉称号

    请不要去改题目给的输入,不然你会wa穿... 这么故弄玄虚的题目,肯定要先转换问题 看到这个不断的除2想起别人家的线段树的写法...x的两个孩子是x<<1和x<<1|1 然后问 ...

  6. oracle中的sys用户(修改密码)/////Oracle删除表空间的同时删除数据文件 ///// Oracle中如何保证用户只有一个session登录

    oracle中的sys用户(修改密码) (2011-07-01 09:18:11) 转载▼ 标签: it 分类: oracle 概念: SYS用户是Oracle中权限最高的用户,而SYSTEM是一个用 ...

  7. jfreechart应用3--饼状图 学习(作者:百度 被风吹过的日子)

    jfreechart应用3--饼状图 三. 饼图 在WebRoot目录下建立名为pie的子目录,用来存放本教程中饼图的实例jsp页面.下面让我们来看一个简单的三维饼图.首先在pie目录下建立一个名为s ...

  8. JSTL1.1函数标签库(functions)如fn:length

    JSTL1.1函数标签库(functions)如fn:length 分类: java ssh22012-06-11 09:02 313人阅读 评论(1) 收藏 举报 stringcharacterxm ...

  9. javascript base64 编码,兼容ie6789

    用Javascript进行base64编码,在高版本的IE浏览器(IE9以上版本),和firefox,chrome浏览器里是非常方便的.这些浏览器的window对象中内置了base64的编码和解码方法 ...

  10. Java 学习路线建议

    在大家看之前,我要先声明两点.1.由于我本人是Java后端开发出身,因此所推荐的学习内容是Java Web和Java后端开发的路线,非Java Web和Java后端开发的同学请适当参考其学习思想即可, ...