<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>

05-11 13:37