黑马程序员 c#单态的设计模式 (专题二)

该问题仍是前几天在做坦克大战游戏时发现的:

首先给大家介绍一下单态:

            单态就是保证程序在运行的过程中只允许有一个实例对象产生,所以其特点主要有:单态类只能有一个实例、

                         单态类必须自己创建自己的一个唯一的实例、单态类必须给客户端使用次实例的方式, 通过一定的方式返回。

只说定义于事无补,下面看代码示例:

          这段代码是我的坦克大战中用到的代码:

                               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模式由于使用静态 成  员 存储类实例,所以可能会造成资源无法及时释放,带来问题。

posted @ 2013-07-04 19:31  zhanglingzeng  阅读(324)  评论(0编辑  收藏  举报