Singleton模式(Singleton创建类型)c#简单的例子
2015-08-20 17:44
836 查看
单(Singleton创建模式)c#简单的例子
当需要生成一个实例,可单发模式
样品可以在短短的球员中产生,玩家和测试。单线程例子,如以下:
此文件由朱朱编写,转载请注明出自朱朱家园http://blog.csdn.net/zhgl7688
当需要生成一个实例,可单发模式
样品可以在短短的球员中产生,玩家和测试。单线程例子,如以下:
namespace singletonpattern { public partial class SingletonForm : Form { public SingletonForm() { InitializeComponent(); } private void btnDisplay_Click(object sender, EventArgs e) { player player1 = player.GetPlayer; player1.jump = "跳一跳"; player1.move = "走一走";//对player1赋值 listBox1.Items.Add("------play1.jump,player1.move-------"); listBox1.Items.AddRange(new string[] { player1.jump, player1.move }); player player2 = player.GetPlayer;//未对player2赋值,但值与player1同样 listBox1.Items.Add("------play2.jump,player2.move-------"); listBox1.Items.AddRange(new string[] { player2.jump, player2.move }); player1.jump = "跳一跳,跑一跑"; player1.move = "走一走,看--看";//改动的player1。player2也被改动,说明是同一个类 listBox1.Items.Add("------play2.jump,player2.move-------"); listBox1.Items.AddRange(new string[] { player2.jump, player2.move }); listBox1.Items.Add(object.ReferenceEquals(player1, player2));//显示为true,说明两个为同一个类 } } class player { private player()//单例第一步,设构造函数为私有的。 { } private static player getplayer; public static player GetPlayer//第二步获取单例 { get { if (getplayer == null)//推断是否实例唯一 { getplayer = new player(); } return getplayer; } } public string jump { get; set; }//单例中的属性 public string move { get; set; } } }当中
private static player getplayer; public static player GetPlayer//第二步获取单例 { get { if (getplayer == null)//推断是否实例唯一 { getplayer = new player(); } return getplayer; } }可简化为一句
public static readonly player GetPlayer = new player();//简化单例模式
此文件由朱朱编写,转载请注明出自朱朱家园http://blog.csdn.net/zhgl7688
相关文章推荐
- 编写高质量代码改善C#程序的157个建议——建议101:使用扩展方法,向现有类型“添加”方法
- 在 C# 中,(int) ,Int32.Parse() 和 Convert.toInt32() 三种方法的区别
- 编写高质量代码改善C#程序的157个建议——建议100:静态方法和实例方法没有区别
- C#实现绑定DataGridView与TextBox之间关联的方法
- C# mvc通用扩展性高的权限管理方法,粒度action
- C#通过反射获取当前工程中所有窗体并打开的方法
- dotTrace快速帮助你定位C#代码的性能瓶颈
- C#窗体中根据两点坐标绘制直线
- c#进制转换(转)
- 问题:C# List;结果:C#中数组、ArrayList和List三者的区别
- c# 使用Codosys.dll(CDO)发送邮件
- 编写高质量代码改善C#程序的157个建议——建议99:重写时不应使用子类参数
- C#中安全的判断两个实例是否不等(不是同一个)
- 编写高质量代码改善C#程序的157个建议——建议98:用params减少重复参数
- C#多任务并行阶段控制—— Threading.Barrier
- 编写高质量代码改善C#程序的157个建议——建议97:优先考虑将基类型或接口作为参数传递
- 编写高质量代码改善C#程序的157个建议——建议96:成员应优先考虑公开基类型或接口
- C# ManualResetEvent 类的用法
- c#多态的简单练习
- 编写高质量代码改善C#程序的157个建议——建议95:避免在构造方法中调用虚成员