单件模式的两个简单实例
计数器功能
实际用途 : 网站访问量的统计:
代码 :
///
/// whs
/// 声明一个单件模式的对话类
/// 注意的事项
/// 1 构造函数必须是所有的。
/// 2 创建实例的函数必须是静态的的
/// 3 实例对象必须是静态的
///
class SingletonCount
{
//声明私有的构造函数
private SingletonCount()
{ }
private static SingletonCount mySingletonCount;
private static int count = 0;
public string setCount()
{
count = count +1;
return count.ToString();
}
public static SingletonCount GetInstance()
{
if (mySingletonCount == null)
{
mySingletonCount = new SingletonCount();
}
return mySingletonCount;
}
}
数据库连接
实际用途 : 程序连接数据库,如果每次操作数据库都要去连接数据库,是一笔很大的系统开销,那么我们可以让程序保持一个数据库连接。创建一个数据库单件模式的类 可以实现这个架构。
代码 :
///
/// 单件模式的数据库连接。
/// whs:
///
public class SingletonDataConnect
{
// 连接实例
private static OleDbConnection conn = null;
// 连接字符串
private string connString;
//类实例的锁
private static object classlock = typeof(SingletonDataConnect);
//类的实例『类的内部可以包含类的实例:只是声明一个变量,但是没有实例化,那么指针到底指向了谁。』
private static SingletonDataConnect dc;
//类是否实例化的标志。
private static bool instanceFlag = false;
//定义私有构造函数防止用户生成实例;用户不能生成实例,那么哪里进行实例初始化那。
private SingletonDataConnect()
{
connString = getConnString();
}
private string getConnString()
{
try
{
XmlDocument doc = new XmlDocument();
doc.Load(@"conn.xml"); //数据库连接设置的XML文件
string returnval = doc.DocumentElement.InnerText.Trim();
doc = null;
return returnval;
}
catch (Exception err)
{
throw new Exception(err.Source + ":" + err.Message);
}
}
// 对类进行实例化。
public static SingletonDataConnect CreateConn()
{
//生成实例前加锁,保证只生成一个连接实例
lock (classlock)
{
// 如果生成过实例就不再生成新的实例。
if (!instanceFlag)
{
dc = new SingletonDataConnect();
instanceFlag = !instanceFlag;
}
}
return dc;
}
public OleDbConnection Open()
{
if (conn == null)
{
conn = new OleDbConnection(connString);
conn.Open();
}
return conn;
}
public void Close()
{
if (conn.State == System.Data.ConnectionState.Open)
{
conn.Close();
conn = null;
}
}
转载于:https://www.cnblogs.com/sdgxbooy/archive/2008/12/05/8903015.html
单件模式的两个简单实例相关推荐
- python 嵩天 笔记,【笔记】嵩天-Python语言程序设计-完成两个简单实例
目标 使用pycharm,完成两个小实例的编写和运行.一个是温度转换,一个是蟒蛇图形绘制. 过程 1.先设置project目录,虽然命名不是很正式,主要不太习惯软件的目录结构,好在只是熟悉语言和工具, ...
- numpy meshgrid 和 mgrid 的两个简单实例和解析
numpy.meshgrid 和 numpy.mgrid 用于返回包含坐标向量的坐标矩阵. 当坐标矩阵为二维时, 可用于在图像变形时构建网格. 实例一 from __future__ import p ...
- 在王者荣耀角度下分析面向对象程序设计B中23种设计模式之单件模式
· 单件模式在王者荣耀中的应用 · 一.简述 今年春节王者荣耀出了一个叫做"王者快跑"的限时玩法,许多玩家都很喜欢这个游戏模式.不同于5V5的王者地图,这个地图是一个跑道中途有很多 ...
- Java设计模式——单件模式
概述 有一些对象其实我们只需要一个,比方说:线程池(threadpool).缓存(cache).对话框.处理偏好设置和注册表(registry)的对象.日志对象,充当打印机.显卡等设备的驱动程序的对象 ...
- Android Fragment 简单实例
Android上的界面展示都是通过Activity实现的.Activity实在是太经常使用了.我相信大家都已经很熟悉了,这里就不再赘述. 可是Activity也有它的局限性,相同的界面在手机上显示可能 ...
- 《Head First设计模式》第五章笔记-单件模式
单件模式 定义:确保一个类只有一个实例,并提供全局访问点. 编写格式: 1 2 3 4 5 6 public class MyClass{ private MyClass(){}//构造方法私 ...
- mysql 两列数据互换_mysql 实现互换表中两列数据方法简单实例
由于最近项目,有这样一个需求,是把数据库中的两列数据互换,经过好久才搞定,这里写个简单实例,做过记录. 1.创建表及记录用于测试 CREATE TABLE `product` ( `id` int(1 ...
- C++两种编写单件模式方法对比
1.第一种: 1 template <typename T> 2 class CSingletonT 3 { 4 public: 5 6 virtual ~CSing ...
- 数据库的三级模式和两级映射--简单介绍
形象解释数据库的三级模式和两级映射 数据库的三级模式和两级映射是美国国家标准协会(American National Standard Institute, ANSI)的数据库管理系统研究小组于197 ...
最新文章
- Android 应用性能优化-StrictMode(严格模式)
- 《JAVA练习题目4》 训练要点:String和StringTokenizer的使用,以及排序算法。
- Spring XD 1.1 M2 and 1.0.3 released---support kafka
- [C1W3] Neural Networks and Deep Learning - Shallow neural networks
- c语言图形界代码,求个用最简单的的代码来实现图形界面…
- c语言游戏编程网盘下载,C语言游戏编程 计算器(5分下载)
- python爬取知乎live_Python爬虫从入门到放弃(十九)之 Scrapy爬取所有知乎用户信息(下)...
- 网站子域名扫描程序,采用三种扫描方式(crt网站查询、站长网站查询、字典暴力破解)
- html汉字在ie11中乱码,你好 我电脑 IE11 网页下拉的键都变成的中文乱码 例如“马夬”“邢”之类的中文乱码...
- Schlumberger Drilling Office v4.0 1CD(综合钻井工程设计软件)
- 高版本SDK编译apk在低版本android源码中编译
- 【Ubuntu 20.04 安装中文输入法 谷歌拼音】
- Java 导出CSV文件及实现web下载CSV
- 微信小程序仿抖音,微视上下滑动整屏切换视频带关注,收藏
- html js不触发_「万字整理 」这里有一份Node.js入门指南和实践,请注意查收 ??
- 上网操作1000问(供初學者)
- Redis 6.2 启动关闭
- innerText和innerHTML区别
- mysql码表是什么意思_什么是码表,什么是维度表?
- 大学生书店网页设计制作 简单静态在线书店HTML网页作品 小说书籍网页作业成品 学生期末作业网站模板