• 步步为营-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();
            }

    具体代码

    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;
            }
        }
    }
    Login
    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();
            }
        }
    }
    Form1
  • 相关阅读:
    设计模式13---设计模式之观察者模式(Observer)(行为型)
    codeforces 166C Median
    HDU 1176 免费馅饼
    老鸟的Python新手教程
    setsockopt()使用方法(參数具体说明)
    RelativeLayout经常使用属性介绍
    java多线程模拟生产者消费者问题,公司面试常常问的题。。。
    JAVA实现HTTPserver端
    进程间通信_03命名管道
    expdp&impdp
  • 原文地址:https://www.cnblogs.com/YK2012/p/6707558.html
Copyright © 2020-2023  润新知