码迷,mamicode.com
首页 > Windows程序 > 详细

【学习笔记】C# 单例

时间:2017-07-22 15:40:53      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:log   logs   sys   ace   ret   接口   ons   创建对象   demo   

  • 单例
    • 单例是一种设计模式
    • 确保一个类最多同时存在一个实例,并易于访问
  • 单例实现
    • 私有化构造方法
    • 内建静态实例
    • 提供接口给外界用于获取实例
  •   
     1 using System;
     2 
     3 namespace SingletonPatternDemo
     4 {
     5     //单例-保证在程序运行期间,一个类最多同时存在一个唯一的对象,访问对象更加方便
     6     public class Player
     7     {
     8         //玩家角色的属性
     9         public string name;
    10         public int level;
    11         public int hp;
    12         public int maxhp;
    13 
    14         //public 属性
    15 
    16         //3. 提供获取实例的接口
    17         public static Player GetInstance()
    18         {
    19             if (null == _instance)
    20             {
    21                 _instance = new Player();
    22             }
    23             return _instance;
    24         }
    25 
    26         //2. 我们需要在类的内部提供一个静态实例
    27         private static Player _instance;
    28 
    29 
    30         //1. 私有化构造方法 - 不让外界随意创建对象
    31         private Player()
    32         {
    33 
    34         }
    35     }
    36     public class Bag
    37     {
    38         public void UseHp()
    39         {
    40             Player p = Player.GetInstance();
    41             p.hp += 10;
    42             //确保player的hp不超过最大值
    43             p.hp = p.hp > p.maxhp ? p.maxhp : p.hp;
    44         }
    45     }
    46     class Program
    47     {
    48         static void Main(string[] args)
    49         {
    50             Player p = Player.GetInstance();
    51             p.name = "Li";
    52             p.level = 1;
    53             p.hp = 2;
    54             p.maxhp = 100;
    55 
    56             Bag b = new Bag();
    57             b.UseHp();
    58 
    59             Console.WriteLine(p.hp);
    60 
    61             //获取的对象仍然是上面的对象,确实在运行程序的过程中,只有一个角色进入角色
    62             Player p2 = Player.GetInstance();
    63             Console.WriteLine(p2.name);
    64         }
    65     }
    66 }

     

【学习笔记】C# 单例

标签:log   logs   sys   ace   ret   接口   ons   创建对象   demo   

原文地址:http://www.cnblogs.com/stardream19/p/7221322.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!