<a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IO开发S</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>
该问题仍是前几天在做坦克大战游戏时发现的:
首先给大家介绍一下单态:
单态就是保证程序在运行的过程中只允许有一个实例对象产生,所以其特点主要有:单态类只能有一个实例、
单态类必须自己创建自己的一个唯一的实例、单态类必须给客户端使用次实例的方式, 即 通过一定的方式返回。
只说定义于事无补,下面看代码示例:
这段代码是我的坦克大战中用到的代码:
class collectClass {
private static collectClass cc;
public static collectClass Cc
{
get {
if (cc == null)
{
cc = new collectClass();
}
return cc;
}
void method1()
{
}
}
下面我们来分析下代码:
通常情况下我们定义一个类后,其他类调用该类中的非静态元素时,首先需要先实例化该类,之后再调用该类中成员。
如:
class A
{
//元素
void method1()
{
}
}
另一个类class B;
若在B中调用A中的method1时:需 A a=new A();
a.method1();
那么在单态设计模式下:(仍用本文刚开始的代码演示),我们想用collectClass 类中的成员
那么可以这样,collectClass.cc.method1();
这样就可以省去实例化的麻烦。
注意:
不要使用单例模式存取全局变量。这违背了单例模式的用意,最好放到对应类的静态成员中。
不要将数据库连接做成单例,因为一个系统可能会与数据库有多个连接,并且在有连接池的情况下,应当尽可能及时释放连接。Singleton模式由于使用静态 成 员 存储类实例,所以可能会造成资源无法及时释放,带来问题。
<a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IO开发S</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>