-
03/25 싱글턴 디자인패턴 연습C#/수업내용 2021. 3. 25. 11:51
싱글턴
하나의 클래스가 하나의 인스턴스만 갖도록 제한, 전역범위에서 인스턴스를 엑세스 생성자를 private으로 만듦
일반적으로 Singleton 인스턴스를 클라이언트가 처음 Singleton 인스턴스를 엑세스할때 생성Program.cs
using System; namespace Study07 { class Program { static void Main(string[] args) { Console.WriteLine("Main"); new App(); } } }
App.cs
using System; using System.Collections.Generic; using System.IO; using System.Linq; using Newtonsoft.Json; namespace Study07 { public class App { //생성자 public App() { Console.WriteLine("App"); DataManager.GetInstance().LoadWeaponData("./weapon_data.json"); foreach(var weaponData in DataManager.GetInstance().dicWeaponDatas) { Console.WriteLine("{0} {1}", weaponData.Key, weaponData.Value.name); } } } }
DataManager.cs
using Newtonsoft.Json; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Study07 { public class DataManager { private static DataManager instance; public Dictionary<int, WeaponData> dicWeaponDatas; //생성자 private DataManager() { } public static DataManager GetInstance() { if (DataManager.instance == null) DataManager.instance = new DataManager(); return DataManager.instance; } public void LoadWeaponData(string path) { var json = File.ReadAllText(path); var arr = JsonConvert.DeserializeObject<WeaponData[]>(json); dicWeaponDatas = arr.ToDictionary(x => x.id); } } }
WeaponData.cs
namespace Study07 { public class WeaponData { public int id; public string name; public int grade_type; public float damage; public int sell_price; } }
Json파일
'C# > 수업내용' 카테고리의 다른 글
03/29 Thread 복습 2 (Abort) (0) 2021.03.29 03/29 Thread 복습 1 (생성 및 실행) (0) 2021.03.29 03/24 수업내용 메모 (0) 2021.03.24 03/24 직렬화, JSON, 파일시스템 연습 (0) 2021.03.24 03/24 event연습 (0) 2021.03.24