首页 > 其他分享 >单例模式

单例模式

时间:2024-07-31 15:56:20浏览次数:13  
标签:SingletonBase 模式 MySingleton 实例 单例 new public

单例模式

using System;

namespace SingletonPattern
{
    /// <summary>
    /// 单例模式基类
    /// </summary>
    /// <typeparam name="T">要实现单例模式的类类型</typeparam>
    public abstract class SingletonBase<T> where T : SingletonBase<T>, new()
    {
        // 用于存储单例实例
        private static readonly Lazy<T> instance = new Lazy<T>(() => new T());

        /// <summary>
        /// 获取单例实例
        /// </summary>
        public static T Instance => instance.Value;

        // 保护构造函数,防止外部实例化
        protected SingletonBase()
        {
            if (instance.IsValueCreated)
            {
                throw new InvalidOperationException("不能创建单例类的另一个实例。");
            }
        }

        /// <summary>
        /// 初始化单例实例的方法,可以由派生类重写
        /// </summary>
        protected virtual void Initialize()
        {
            // 可由派生类实现
        }
    }

    /// <summary>
    /// 一个具体的单例类示例
    /// </summary>
    public class MySingleton : SingletonBase<MySingleton>
    {
        // 私有构造函数
        private MySingleton()
        {
            // 在这里可以放置初始化代码
        }

        // 可以重写初始化方法
        protected override void Initialize()
        {
            base.Initialize();
            // 在这里添加具体的初始化逻辑
        }

        // 示例方法
        public void DoSomething()
        {
            Console.WriteLine("MySingleton is doing something.");
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            // 获取单例实例并调用其方法
            MySingleton.Instance.DoSomething();
        }
    }
}

标签:SingletonBase,模式,MySingleton,实例,单例,new,public
From: https://www.cnblogs.com/guan-tou6/p/18334839

相关文章

  • 电商商城创新商业模式深度剖析
    在探索电子商务的广阔领域时,选择最适合您企业的商业模式路径是迈向成功的关键一步。以下是对几种主要电子商务模式类型的深入解析,旨在帮助您找到那条通往繁荣的最佳路径。1. B2C(Business-to-Consumer)模式定义:B2C模式是指企业直接面向消费者销售产品和服务的电子商务模式。它缩......
  • 定制化电商商城系统:构建独特商业模式的创新之路
    随着互联网的飞速发展,电子商务已成为现代商业的重要组成部分。为了满足不同企业的特定需求和业务模式,电商商城系统的定制开发显得尤为重要。本文将深入探讨电商商城系统商业模式制度的定制开发过程,从需求分析、系统设计、开发实施到上线运营等各个环节进行详细解析。一、前期准......
  • VMWare设置桥接模式,CentOS7设置静态IP
    1、在VMWare中给虚拟机设置为桥接模式,如下图: 2、设置CentOS7静态IP(1)进入网络配置文件目录,命令如下:cd/etc/sysconfig/network-scripts/(2)查看网络配置文件(3)打开网络配置文件,命令如下:vimifcfg-ens33(4)参考以下对配置文件进行修改DEVICE=ens33#虚拟机网卡名......
  • Python rocketMq 客户端的同步和异步模式
    同步模式fromrocketmq.clientimportPushConsumer,ConsumeStatusimporttimedefcallback(msg):print(msg.id,msg.body,msg.get_property('property'))returnConsumeStatus.CONSUME_SUCCESSdefstart_consume_message():consumer=PushCon......
  • 装饰大师——装饰模式(Java实现)
    引言大家好,上期我们介绍了装饰模式在Python中的实现,今天,我们将继续探讨装饰模式,并展示如何在Java中实现它。装饰模式概述装饰模式的核心思想是将功能附加到对象上,而不是通过继承来实现,这种模式包含以下几个关键组成部分:组件接口:定义基本功能;具体组件:实现基本功能的类;装......
  • 浅谈数据中心机房机柜配电新模式及选型探讨
    摘要:分析当前数据中心机房传统列头柜配电方式的特点及其存在的问题。从提高机房末端配电安全性、可用性的角度出发,重点介绍数据中心机房机柜配电的新模式—智能母线槽配电方案。并对智能母线方案的实现方式作了深入探讨分析。总结优势及其代表的未来趋势。关键词:数据中心机......
  • 单例模式
    类只实例化一次,即在服务中只有一个实例。 1、使用场景节省内存空间,比如配置信息类;单例模式可以用来管理一些共享资源,比如数据库连接池,线程池;解决资源冲突问题,比如日志打印。2、实现方式2.1饿汉(线程安全)初始化时就创建实例2.2懒汉(线程不安全)需要时才创建实例2.3注解......
  • 我无法插入背景图像、进入全屏模式并关闭以前的窗口
    我正在编写一个根据该算法工作的程序(也就是说,当您单击某些按钮时,会出现另一个窗口或带有结果的最终窗口,并且当您单击按钮时应该从Toplevel(opennewwindow(1))出现另一个窗口)我编写了这个程序的基本代码,但我未能在所有窗口上插入背景图像,以及为所有窗口设置全屏模式并关闭以前的......
  • chapter3------保护模式之特权级转移
    特权级特权级总共有4个级别,数字越小表示的特权级越大CPL-CurrentPrivilegeLevel(当前特权级):用于指示处理器当前运行的特权级别DPL-DescriptorPrivilegeLevel(描述符特权级):用于指示段描述符或门描述符的特权级别。每个段描述符或门描述符都有一个DPL字段,它决定了访问该......
  • 使用Seata XA模式的全局事务管理在SpringCloud电商订单系统中的应用
    在开发电商系统的过程中,订单创建是一项非常关键的功能。本文将介绍如何在订单创建过程中,结合SpringCloud和Seata的XA模式来实现全局事务管理,以确保数据的一致性和完整性。订单创建过程详解在这段代码中,我们通过@GlobalTransactional注解来声明一个全局事务。以下是具体的......