C# 机房重构单例模式

简介: C# 机房重构单例模式

机房重构单例模式

前言

在进行机房重构时,会出现每点击一次“实例化窗体按钮”,就会出现一个窗体,这样点击多次就会出现很多个窗体。怎么解决这个问题呢?这儿就需要用到设计模式中的单例模式了。

单例模式

单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
设计模式书上说:通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象。一个最好的办法就是,让泪自身负责保存它的唯一实例。这个类可以保证没有其他势力可以被创建,并且他可以提供一个访问该实例的方法。


要点:1.这个类不能通过new来实例化它。2.可以提供一个访问它的方法

实例

具体问题:窗体被实例化多次

思路:

1.将类的构造方法改为私有类型,这样其他类就无法访问了也就不能通过new来实例化它了。

2.创建一个公有类型的方法,返回一个类实例,这个方法来判断是否实例化
实现代码:

子窗体:

public partial class frmStudentLineStatus : Form
    {
        //声明一个静态的类对象
        private static frmStudentLineStatus fsls = null;
        //私有的构造放方法
        private  frmStudentLineStatus()
        { 
            InitializeComponent();
        }
        //得到类实例的方法,返回值为本对象
        public static frmStudentLineStatus GetInstance ()
        {
        //判断类是否被实例化,或者是否被关闭
            if (fsls==null || fsls.IsDisposed )
            {
                fsls = new frmStudentLineStatus();
            }
            return fsls;
        }

父窗体:

private void toolStripMenuItem1_Click(object sender, EventArgs e)
        {
            Operator.frmStudentLineStatus.GetInstance().Show();
        }
目录
相关文章
|
9月前
|
BI C# C++
C#机房重构之报表
C#机房重构之报表
56 0
|
9月前
|
SQL C# 数据库
C#机房重构之错误集锦(三)
C#机房重构之错误集锦(三)
62 0
|
3月前
|
设计模式 安全 C#
C# 单例模式的多种实现
C# 单例模式的多种实现
|
4月前
|
设计模式 安全 Java
C# 一分钟浅谈:设计模式之单例模式
【10月更文挑战第9天】单例模式是软件开发中最常用的设计模式之一,旨在确保一个类只有一个实例,并提供一个全局访问点。本文介绍了单例模式的基本概念、实现方式(包括饿汉式、懒汉式和使用 `Lazy<T>` 的方法)、常见问题(如多线程和序列化问题)及其解决方案,并通过代码示例详细说明了这些内容。希望本文能帮助你在实际开发中更好地应用单例模式,提高代码质量和可维护性。
161 1
|
6月前
|
设计模式 安全 程序员
C#设计模式之单例模式
C#设计模式之单例模式
66 3
|
9月前
|
C#
C# 机房合作代码块
C# 机房合作代码块
51 0
|
9月前
|
C#
C#机房重构之错误集锦(二)
C#机房重构之错误集锦(二)
112 0
|
C# 数据安全/隐私保护
C#机房重构-修改密码之职责链模式+反射
C#机房重构-修改密码之职责链模式+反射
72 0
|
3月前
|
C# 开发者
C# 一分钟浅谈:Code Contracts 与契约编程
【10月更文挑战第26天】本文介绍了 C# 中的 Code Contracts,这是一个强大的工具,用于通过契约编程增强代码的健壮性和可维护性。文章从基本概念入手,详细讲解了前置条件、后置条件和对象不变量的使用方法,并通过具体代码示例进行了说明。同时,文章还探讨了常见的问题和易错点,如忘记启用静态检查、过度依赖契约和性能影响,并提供了相应的解决建议。希望读者能通过本文更好地理解和应用 Code Contracts。
61 3
|
2月前
|
存储 安全 编译器
学懂C#编程:属性(Property)的概念定义及使用详解
通过深入理解和使用C#的属性,可以编写更清晰、简洁和高效的代码,为开发高质量的应用程序奠定基础。
120 12