ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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파일

    weapon_data.json
    0.00MB

    '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
Designed by Tistory.