机房重构单例模式
前言
在进行机房重构时,会出现每点击一次“实例化窗体按钮”,就会出现一个窗体,这样点击多次就会出现很多个窗体。怎么解决这个问题呢?这儿就需要用到设计模式中的单例模式了。
单例模式
单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
设计模式书上说:通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象。一个最好的办法就是,让泪自身负责保存它的唯一实例。这个类可以保证没有其他势力可以被创建,并且他可以提供一个访问该实例的方法。
要点: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(); }