• 单例模式


                                    单例模式

           大年初一。看了一下李建忠先生讲的单件模式,决定写点什么,写的东西呢,如题。

           单例模式就是设计模式中的一种,唯一与多态、继承、封装没有关系的一个设计模式。它是属于一个创建型的设计模式。创建型的主要负责的是创建对象。另外还有一些结构型和行为型的一些设计模式。结构型主要处理类与对象间的一些关系,行为型则处理类与对象交互的一些问题。

          一般而言,我们是一直能创建出对象的,能一直new出来的。能创建出很多实例的,要new一个对象必须访问构造函数,除非你让构造函数不能访问,将其权限改成private。话回单立模式,思路就是我们在当前类中创建一个静态方法。当然需要注意的是必须是静态方法,因为不能new对象了,你就不可以调用实例方法的。在静态方法中,如果当前实例为空,则new一个当前方法的实例,如若有则将已有的实例返回也就好了。那么上面得对象的时候就得用静态方法的点出来了,就不用实例方法new了。

          下面附上代码:

        

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Security.Cryptography.X509Certificates;
     5 using System.Text;
     6 using System.Threading.Tasks;
     7 
     8 namespace _02单立模式
     9 {
    10     class Program
    11     {
    12         static void Main(string[] args)
    13         {
    14             //Singleton s1 = new Singleton();
    15             //Singleton s2 = new Singleton();
    16             Singleton s1 = Singleton.CreageSingleton();
    17             Singleton s2 = Singleton.CreageSingleton();
    18             Console.WriteLine(s1);
    19             Console.WriteLine(s2);
    20             Console.WriteLine(object.ReferenceEquals(s1, s2));
    21             Console.ReadKey();
    22         }
    23     }
    24 
    25     /// <summary>
    26     /// 创建一个实例类。名字叫Singleton.
    27     /// </summary>
    28     public class Singleton
    29     {
    30         private static Singleton _instance;
    31         //private Singleton()此处与上面的注释的相对应,如若此处访问符改成private则上面注释的两行代码是会错的。
    32         //{
    33 
    34         //}
    35         //创建一个静态方法,用此方法返回对象
    36         public static Singleton CreageSingleton()
    37         {
    38             if (_instance == null)
    39             {
    40                 _instance = new Singleton();
    41             }
    42             return _instance;
    43         }
    44     }
    45 }
    单例模式的Model

         下面是效果的一个图片:

       

            

  • 相关阅读:
    快读
    状态压缩-动态规划
    数论入门_扩展欧几里得算法
    luogu P3383线性筛素数(埃氏筛)
    luogu P1843奶牛晒衣服
    git 常用方法
    javascript 数组排序
    深入理解javascript函数参数
    深入理解call apply bind方法
    移动H5前端性能优化
  • 原文地址:https://www.cnblogs.com/anmutu/p/3536893.html
Copyright © 2020-2023  润新知