步步为营-07-设计模式-单例
下面主要学习一下单例设计模式
首先,先看一个现象,当用户点击"登录"按钮,会弹出"登录对话框",但是当用户多次点击时,会new很多对话框.所以我们需要对代码进行改造
1.1 构造函数私有化
private Login()
1.2 声明静态字段
public static Login _single;
1.3 通过静态函数返回全局唯一对象
public static Login GetLogin()
{
if (_single == null)
{
_single = new Login();
}
return _single;
}
1.4 调用处直接调用GetLogin方法
private void btnLogn_Click(object sender, EventArgs e)
{
Login login = Login.GetLogin();
login.Show();
}
具体代码
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Singleton { public partial class Login : Form { //1构造函数私有化 private Login() { InitializeComponent(); } //2 声明静态字段 public static Login _single; //3 通过一个静态函数返回一个全局唯一的对象 public static Login GetLogin() { if (_single == null) { _single = new Login(); } return _single; } } }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Singleton { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void btnLogn_Click(object sender, EventArgs e) { Login login = Login.GetLogin(); login.Show(); } } }