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


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

  • 相关阅读:
    什么是线程安全和线程不安全
    C# 实现Dictionary数据对象的深度拷贝
    数据库设计三大范式
    Socket 短连接、长连接
    第二篇:MongoDB高级查询
    如何在oracle中导入导出dmp数据库文件
    以太网中的UDP编程:udp分包问题
    CocosBuilder 值得关注的一个新项目
    [转载]iPhone程序到iPad程序的移植问题
    DWR使用总结
  • 原文地址:https://www.cnblogs.com/lingzeng/p/3172240.html
Copyright © 2020-2023  润新知