- 单例
- 单例是一种设计模式
- 确保一个类最多同时存在一个实例,并易于访问
- 单例实现
- 私有化构造方法
- 内建静态实例
- 提供接口给外界用于获取实例
-
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 }
时间: 2024-10-25 12:12:20