Singleton模式(Singleton创建类型)c#简单的例子

简介:

单(Singleton创建模式)c#简单的例子

当需要生成一个实例,可单发模式

样品可以在短短的球员中产生,玩家和测试。单线程例子,如以下:

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



版权声明:本文博客原创文章。博客,未经同意,不得转载。









本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/4745922.html,如需转载请自行联系原作者


相关文章
|
2月前
|
JSON C# 数据格式
【Azure Function】C#独立工作模式下参数类型 ServiceBusReceivedMessage 无法正常工作
Cannot convert input parameter 'message' to type 'Azure.Messaging.ServiceBus.ServiceBusReceivedMessage' from type 'System.String'.
119 73
|
4月前
|
编译器 C#
c# - 运算符<<不能应用于long和long类型的操作数
在C#中,左移运算符的第二个操作数必须是 `int`类型,因此需要将 `long`类型的位移计数显式转换为 `int`类型。这种转换需要注意数据丢失和负值处理的问题。通过本文的详细说明和示例代码,相信可以帮助你在实际开发中正确使用左移运算符。
40 0
|
4月前
|
编译器 C#
c# - 运算符<<不能应用于long和long类型的操作数
在C#中,左移运算符的第二个操作数必须是 `int`类型,因此需要将 `long`类型的位移计数显式转换为 `int`类型。这种转换需要注意数据丢失和负值处理的问题。通过本文的详细说明和示例代码,相信可以帮助你在实际开发中正确使用左移运算符。
111 1
|
4月前
|
编译器 C#
c# - 运算符<<不能应用于long和long类型的操作数
在C#中,左移运算符的第二个操作数必须是 `int`类型,因此需要将 `long`类型的位移计数显式转换为 `int`类型。这种转换需要注意数据丢失和负值处理的问题。通过本文的详细说明和示例代码,相信可以帮助你在实际开发中正确使用左移运算符。
68 3
|
5月前
|
设计模式 程序员 C#
C# 使用 WinForm MDI 模式管理多个子窗体程序的详细步骤
WinForm MDI 模式就像是有超能力一般,让多个子窗体井然有序地排列在一个主窗体之下,既美观又实用。不过,也要小心管理好子窗体们的生命周期哦,否则一不小心就会出现一些意想不到的小bug
419 0
|
5月前
|
C#
C# 可空类型(Nullable)
C# 单问号 ? 与 双问号 ??
94 12
|
6月前
|
设计模式 开发框架 前端开发
MVC 模式在 C# 中的应用
MVC(Model-View-Controller)模式是广泛应用于Web应用程序开发的设计模式,将应用分为模型(存储数据及逻辑)、视图(展示数据给用户)和控制器(处理用户输入并控制模型与视图交互)三部分,有助于管理复杂应用并提高代码可读性和维护性。在C#中,ASP.NET MVC框架常用于构建基于MVC模式的Web应用,通过定义模型、控制器和视图,实现结构清晰且易维护的应用程序。
93 2
|
7月前
|
前端开发 开发者 C#
深度解析 Uno Platform 中的 MVVM 模式:从理论到实践的全方位指南,助你轻松掌握通过 C# 与 XAML 构建高效可维护的跨平台应用秘籍
【8月更文挑战第31天】本文详细介绍如何在优秀的跨平台 UI 框架 Uno Platform 中实施 MVVM(Model-View-ViewModel)模式,通过一个简单的待办事项列表应用演示其实现过程。MVVM 模式有助于分离视图层与业务逻辑层,提升代码组织性、易测性和可维护性。Uno Platform 的数据绑定机制使视图与模型间的同步变得高效简便。文章通过构造 `TodoListViewModel` 类及其相关视图,展示了如何解耦视图与模型,实现动态数据绑定及命令处理,从而提高代码质量和开发效率。通过这一模式,开发者能更轻松地构建复杂的跨平台应用。
94 0
|
7月前
|
程序员 C#
C# 语法基础全解
C# 语言类型全解
52 0
|
7月前
|
开发框架 .NET 编译器
C# 中的记录(record)类型和类(class)类型对比总结
C# 中的记录(record)类型和类(class)类型对比总结
108 0