设计模式——单例模式

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、初始化窗体为:

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

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

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

 

 

 

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

posted @ 2012-11-23 14:37  low_key  阅读(190)  评论(0)    收藏  举报