当前位置: 首页 > news >正文

WinForm实现窗体跳转,设计模式之单例模式

以下方法的优势:

  1. 节约资源:单例模式确保每种窗体只被实例化一次,避免了重复创建和销毁窗体所带来的性能开销。
  2. 全局访问:单例模式提供了一个全局访问点,便于在应用程序的不同部分访问同一实例。
  3. 线程安全:通过使用 lock 语句,确保了在多线程环境下对窗体实例的安全访问。
  4. 代码管理:由于使用了泛型类,可以将窗体管理逻辑集中在一个地方,使代码更简洁,易于维护和扩展。
  5. 用户体验:通过复用已有窗体,用户可以在不同的操作之间快速切换,避免了频繁的窗体加载和初始化,提高了应用程序的响应速度和流畅度
  6. 可扩展性:这个设计模式为未来的扩展提供了良好的基础。如果以后需要支持更多的窗体,只需继承 SingletonForm<T> 类。

一、创建SingletonForm<T>泛型类

 //创建一个单例类,用于创建和管理窗体的唯一实例 public class SingletonForm<T> where T : Form, new()//泛型类 接收任意类型 条件是必须是Form类型和一个无参数的构造函数{//存储窗体的唯一实例private static T _instance;//锁  用于确保线程安全private static readonly object _lcok = new object();//属性 用于获取窗体的唯一实例public static T Instance{get{lock (_lcok){//判断窗体是否为空或者是否被释放 释放或为空则再初始化 不为空直接返回此窗体if (_instance == null || _instance.IsDisposed){_instance = new T();}return _instance;}}}}

二、使用单例模式实现创建和跳转窗体(以button按钮控件的点击事件跳转Home窗体为例)

 private void login_btn_Click(object sender, EventArgs e){//获取单例实例Home home = SingletonForm<Home>.Instance;//检测窗体是否被释放if (home.IsDisposed){home = new Home();}//显示窗体home.Show();//确保打开的窗体在最高层级home.BringToFront();}


http://www.mrgr.cn/news/6417.html

相关文章:

  • Python编码系列—Python WebSocket 实时通信:构建高效互动的网络应用
  • Swift代码生成:自动化编码的艺术与实践
  • Git 的基本使用
  • JUC7-共享模型之工具
  • 全面解读AI大模型:一文带你看懂发展脉络与未来走向!
  • 基于swifter多内核的加速Pandas DataFrame操作运行
  • poi-tl循环放图片+文字说明
  • html js弹幕功能
  • Spring的笔记补充
  • B站宋红康JAVA基础视频教程个人笔记chapter07(面向对象高级)
  • Linux Nvidia驱动一览
  • 探索ChatGPT:一场AI语言模型的革命
  • 数据结构(邓俊辉)学习笔记】优先级队列 08——左式堆:结构
  • 算法的学习笔记---按之字形顺序打印二叉树
  • 分布式 - 主从复制技术详解及时延处理
  • vue3+vite5+vant4移动端rem适配方案
  • Spring面试题一
  • Shell 编程规范与变量
  • V90伺服使用FB284报警8402
  • NextJs - 服务端/客户端组件之架构多样性设计