设计模式——单例模式
1、单例模式一般在像系统设置一样,一次性设置好以后,经常不会改动的情况下应用。
2、单例模式原理:前台每次都调用entity(实体类中的数据),假如实体类中没有,就new一个新对象出来。通过单例,给entity赋值。所以在每次设置数据库中的信息同事也要调用单例给entity赋值
3、

4、实例:
a:前端显示数据
//写入数据
private void button3_Click(object sender, EventArgs e)
{
Signle s = new Signle();
s.SetSignleEntity(textBox1.Text);
MessageBox.Show("写入成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
//显示数据
private void button1_Click(object sender, EventArgs e)
{
SignleEntity se = Signle.GetInstance().InstanceSignleEntity;
MessageBox.Show(se.Signle, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
//单例
private void button2_Click(object sender, EventArgs e)
{
Signle.initSignleEntity();
MessageBox.Show("设置单例成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
b:业务处理
public class Signle
{
private static Signle instance;
private static SignleEntity _Signle;
/// <summary>
/// 获取设置单例
/// </summary>
/// <returns>系统配置信息</returns>
public static Signle GetInstance()
{
if (instance == null)
{
instance = new Signle();
_Signle = instance.GetSignle();
}
return instance;
}
/// <summary>
/// 初始化
/// </summary>
public static void initSignleEntity()
{
instance = new Signle();
_Signle = instance.GetSignle();
}
/// <summary>
/// 系统配置信息(单例)
/// </summary>
public SignleEntity InstanceSignleEntity
{
get
{
return _Signle;
}
}
public void SetSignleEntity(string text)
{
StreamWriter sw = new StreamWriter("text.txt");
sw.WriteLine(text);
sw.Close();
}
public SignleEntity GetSignle()
{
SignleEntity _SignleEntity = new SignleEntity();
StreamReader sr = new StreamReader("text.txt");
_SignleEntity.Signle = sr.ReadLine();
sr.Close();
return _SignleEntity;
}
}
c:实体类
public class SignleEntity
{
private string signle;
public string Signle
{
get { return signle; }
set { signle = value; }
}
}
5、初始化窗体为:

当第一次写入数据后显示结果为文本框的数据:

当第二次写入数据后,在未设置单例的情况下还是显示第一次写入的数据:

点击设置单例,才把第二次写入的数据赋给实体。这样才会显示当前写入的数据:

小生刚学设计模式,目前只能理解单利模式的这么多功能。或许写的不够通俗易懂,请多多包涵,还望高手们提提意见!

浙公网安备 33010602011771号