zoukankan      html  css  js  c++  java
  • 创建型设计模式之单例模式(Singleton)

     结构
    意图 保证一个类仅有一个实例,并提供一个访问它的全局访问点。
    适用性
    • 当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。
    • 当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。
     1 using System;
     2 
     3     class Singleton 
     4     {
     5         private static Singleton _instance;
     6         
     7         public static Singleton Instance()
     8         {
     9             if (_instance == null)
    10                 _instance = new Singleton();
    11             return _instance;
    12         }
    13         protected Singleton(){}
    14 
    15         // Just to prove only a single instance exists
    16         private int x = 0;
    17         public void SetX(int newVal) {x = newVal;}
    18         public int GetX(){return x;}        
    19     }
    20 
    21     /// <summary>
    22     ///    Summary description for Client.
    23     /// </summary>
    24     public class Client
    25     {
    26         public static int Main(string[] args)
    27         {
    28             int val;
    29             // can't call new, because constructor is protected
    30             Singleton FirstSingleton = Singleton.Instance(); 
    31             Singleton SecondSingleton = Singleton.Instance();
    32 
    33             // Now we have two variables, but both should refer to the same object
    34             // Let's prove this, by setting a value using one variable, and 
    35             // (hopefully!) retrieving the same value using the second variable
    36             FirstSingleton.SetX(4);
    37             Console.WriteLine("Using first variable for singleton, set x to 4");        
    38 
    39             val = SecondSingleton.GetX();
    40             Console.WriteLine("Using second variable for singleton, value retrieved = {0}", val);        
    41             return 0;
    42         }
    43     }
    单例模式
  • 相关阅读:
    目前加尼福尼亚自动驾驶公司测试公司————20150529
    DDR3
    Linux mysql 5.7: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
    macOS 10.12,解决如何打开隐私中的任何来源方法
    git查看某个文件的提交历史
    ios-deploy命令
    sed简用
    啊,栈溢出了
    二叉树题目总结(一)
    线段树(二)
  • 原文地址:https://www.cnblogs.com/ziranquliu/p/4647275.html
Copyright © 2011-2022 走看看