zoukankan      html  css  js  c++  java
  • 单例模式

     

     

    namespace ConsoleApplication1
    {
        public class SimpleDemo
        {
            /*
             * public string name;
             * public static SimpleDemo instance;
             * public SimpleDemo(string _n)
             * {
             * instance = this;
             * name = _n;
             * }
             * public void Show()
             * {
             * Console.WriteLine(instance.name);
             * }
             */

    /* static 被静态修饰的变量,在内存中只有一份 */ public static SimpleDemo instance; public static SimpleDemo Getinstance( string n ) { if ( instance == null ) { instance = new SimpleDemo(); instance.name = n; /* 因为instance是SimpleDemo的实例,所以name是可以调出来的 */ } return(instance); } /* ..其他的还可以写其他的属性字段 */ public string name; } class Program { static void Main( string[] args ) { SimpleDemo s6 = SimpleDemo.Getinstance( "s6" ); Console.WriteLine( s6.name ); SimpleDemo s2 = SimpleDemo.Getinstance( "s2" ); Console.WriteLine( s2.name ); /* * 输出的结果都是s6,因为在开始运行到s6的时候,instance是未创建的,是空的;所以会创建一个新的实例, * 等到第二次去运行s2的时候,instance已经创建完成了,直接返回的还是s6的实例, * 无论创建多少的SimpleDemo的实例,返回的都是同一个值 * 用处:思考了一下,感觉和修饰词Const一样,修饰了那个词,那个词的值就定了;只不过这里是可以让一个对象的值定了。 * 比如,超市一类物品属性值固定,就给这一类写个单例模式; * 单例模式,单例模式,就是这个类被实例化了一次,所有的属性就定了;不管你再实例化多少,结果还是同样的, * 实例再多还是"单例" */ /* * SimpleDemo s1 = new SimpleDemo("4"); * SimpleDemo s2 = new SimpleDemo("2"); * s1.Show();//这个是声明几个,会出现几个值,是特殊的单例模式 * Console.ReadKey(); */ Console.ReadKey(); } } }

     

    单例模式的目的就是,确保一个程序中只有一个实例,并提供一个全局访问点,节省系统资源。

    先写一个单例的类
    public Class SingleClass
    {
    //单机模式的第一步,就是要把这个单例类的构造函数的修饰改为private,让这个类无法在外边被实例化
    private SingleClass
    {
    }
    //单机模式的第一步,不能从外边被实例化,就得从内部实例化,再提供一个获取这个使力的接口函数。
    static SingleClass SignClass=null;
    static Object obj=new Object();
    public static SingleClass GetInstance()
    {
    if(SignClass==null)
    {
    locker(obj)
    {
    SignClass=new SingleClass();
    }

    }
    return SingClasss;

    }
    }

    如果SingClass==null,就实例化一个新的出来;如果已经实例化了,就直接返回;
    其中的Lock锁,是为了避免多个线程同时多个实例化。

    单例模式的讲解
    红色部分呢注释掉就不是单例了。

     

     

     bilibili

     访问数据库或者读写IO的时候,也可以用单例模式来减少资源的消耗。

     整个系统!!!!!

  • 相关阅读:
    跟我学Makefile(七)
    C++单例模式
    乘法逆元及求法
    推荐几个jetbrains全家桶好用的插件,同时作为备忘
    win32 获取本机网卡信息(MAC地址,IP地址等)
    centos7 安装 mysql-python时 报错 EnvironmentError: mysql_config not found
    VS2013 中使用 CxImage 库时用Unicode编码时出现链接错误
    剑指offer-二叉搜索树的后序遍历序列
    剑指offer-顺时针打印矩阵
    剑指offer-二叉树的镜像
  • 原文地址:https://www.cnblogs.com/ZkbFighting/p/9590368.html
Copyright © 2011-2022 走看看