zoukankan      html  css  js  c++  java
  • 设计模式单列模式

    何为设计模式呢?简单的说就是能重复利用的解决方案,当碰到A项目也出现这种情况,B项目也出现这种情况

    那么是否能把这懂实现功能抽象出来,形成一种解决方案.

    单列模式:顾名思义就是一个实例(即一个对象只能初始化一次);作用:减少开辟内存空间,节约内存开销

    class Program
        {
            
            static void Main(string[] args)
            {
                A a1 = A(); 
                A a2 = A();
                Console.WriteLine(a1 == a2); //输出false
            }  
        }
    因为A对象在内存堆中开辟了 a1和a2两个内存空间 所以他们的内存地址不可能相对
    那么要怎样才能开辟一个空间呢,也就是创建一个对象呢?
    首先我们就要阻击它new A(),阻击new A()那么构造函必须就要private()私有化
    下面上代码:
    class Program
        {
            
            static void Main(string[] args)
            {
                A a1 = A.getsingleInstance(); //同一个内存地址
                A a2 = A.getsingleInstance();
                A a3 = A.getsingleInstance();
                Console.WriteLine(a1 == a2);
                Console.WriteLine(a2 == a3);
               
            }  
        }
        public class A
        {
            private static A a =null; //静态变量在类加载的时初始化,并且只初始化一次
           
            /// <summary>
            /// 构造方法私有化在外不能new对象
            /// </summary>
            private A()
            {
            }
            public static A getsingleInstance()
            {
                if (a == null)
                {
                    a = new A();
                }
                return  a;
            } 
        }

      


      

  • 相关阅读:
    struts2 s:if 的字符串比较问题
    struts2 标签
    servlet filter
    div滚动与控制
    页面定位
    linux下编译利用CMakeLists.txt 编译C++写的opencv程序
    yolo image.c
    强制杀进程
    PDB GDB 调试代码
    YOLOv3的Darknet在OpenCV3.4.1(bug)下编译出错填坑
  • 原文地址:https://www.cnblogs.com/yzenet/p/3065837.html
Copyright © 2011-2022 走看看