返回列表 发新帖

单例模式

[复制链接]

3

主题

5

帖子

184

积分

注册会员

Rank: 2

积分
184
发表于 2016-7-5 19:53:25 | 显示全部楼层 | 阅读模式
之前做项目的时候,被人家问了几个设计模式。我没回答上来,被人家鄙视了。回头恶补了下设计模式,看着看着,发现这东西还真挺有意思,毕竟这也是大牛们总结的东东,我只是照搬,在代码里尝试去用了。但感觉立马高大上了。。。。

首先最简单的单例模式。。在系统开发中,我们想让某个类只能有一个实例对象,当然我们想在某个范围内使用它,就必须提供一个访问它的方法。所以 定义一个私有的静态全局变量来保存该类的唯一实例。不私有的话就是全局变量了。 然后构造函数必须是私有的,这样在外部便无法使用 new 来创建该类的实例 。例如我在代码中,实现一个消息提示框,系统随机进行提示,如果每次实例化它,还有添加控制它显示的代码,因为每次只能一个消息提示框。具体看C#代码,很简单的一个例子:
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;

  9. namespace InsuBusiness
  10. {
  11.     public partial class frmCy : Form
  12.     {
  13.         public string cyyy = "1";
  14.         public bool isok = false;

  15. //定义一个私有的静态全局变量frm来保存该窗体的唯一实例
  16.         private static frmCy frm = new frmCy();

  17. //构造函数私有
  18.         private frmCy()
  19.         {
  20.             InitializeComponent();
  21.             btnsure.Focus();
  22.         }
  23. //对外提供一个访问它的方法
  24.         public static frmCy getinstance()
  25.         {
  26.             return frm;
  27.         }
  28.     }
  29. }
复制代码
但是在多线程的时候单例模式会比较复杂。容易出现多个实例化对象。网上也有很多人给出的文章有说明,如懒汉式、饿汉式、双重锁的形式来解决这个问题 。



                                                                                                                                                                                                                ---温故知新



回复

使用道具 举报

0

主题

4

帖子

19

积分

新手上路

Rank: 1

积分
19
发表于 2017-1-14 18:01:35 | 显示全部楼层
   阴吹斯特!
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表