如何优化代码节约系统资源解决重复实例化对象的问题——神奇的单例模式(C#设计模式)...

有时候我们常常要在多处使用某一个类里的方法,但是若每一处都new一个实例实在是很耗系统资源的。这样重复的定义式很浪费,这时编程中的“单例模式”就应运而生了。

单例模式的特点就是虽然在多处使用,但使用的却是一个实例,请看下面代码它是如何办到的

using System; using System.Collections.Generic; using System.Text; namespace 单例模式 { class Program { static void Main(string[] args) { Singleton s1 = Singleton.GetInstance(); Singleton s2 = Singleton.GetInstance(); if (s1 == s2) { Console.WriteLine("Objects are the same instance"); } Console.Read(); } } class Singleton { private static Singleton instance; private static readonly object syncRoot = new object(); //将构造函数弄成private,使得无法通过new来实例化这个类 private Singleton() { } public static Singleton GetInstance() { if (instance == null) { lock (syncRoot) { if (instance == null) { instance = new Singleton(); } } } return instance; } } }
运行的结果输出:

Objects are the same instance

定义一个单例模式的类需要以下两步:

第一步:将其无参构造函数定义成pirvate类型,使得外部调用时无法通过new定义一个无参的实例对象

private Singleton() { }

第二步:定义一个public static类型的方法,这个方法返回的类型是这个类的类型。这个方法的作用就是实例化对象,若对象为空,则new一个实例,否则返回当前实例。

public static Singleton GetInstance() { if (instance == null) { lock (syncRoot) { if (instance == null) { instance = new Singleton(); } } } return instance; }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值