디자인 패턴
다양한 문제들을 프로그램을 통해 해결하는 것으로 문제 해결을 위한 설계를 그 기술적 구현 방침을 새우는 것.
-모듈의 세분화된 역할이나 모듈 간의 인터페이스 구현 방식 설계 시, 참조할 수 있는 전형적인 해결 방식
디자인 패턴의 종류는 다음과 같다.
1. 생성 패턴
2. 구조 패턴
3. 행동 패턴
싱글톤 패턴
-생성패턴(Creational pattern)
-하나의 클래스가 하나의 인스터스만 갖는다.(runtime 동안 단 하나의 인스턴스만 생성)
-전역 범위에서 그 인스턴스를 액세스할 수 있게 한다.
-해당 객체의 메모리를 정적으로 할당해 하나의 객체에만 접근한다.
->프로그램이 동작하는 동안 최초로 생성된 객체 하나에만 접근하는 것.
->호출하는데 아주 빠르게 접근할 수 있다.
-하나의 인스턴스만 존재하므로 인스턴스 내의 데이터 관리를 그곳에서 하면 된다.
싱글톤 패턴을 사용하지 않고 관리하는 코드를 구현하려면,
static 클래스를 생성 혹은 생성한 인스턴스를 유지해야하는데,
이는 코드의 품질을 낮추고 객체지향 프로그랭 관점에서 바람직하지 않다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Starcraft
{
internal class DataManager
{//static으로 되어있으면 타입으로 접근한다.
public static readonly DataManager instance = new DataManager();
Dictionary<int, ItemData> dic = new Dictionary<int, ItemData>();
private DataManager() { //private으로 작성
}
public void LoadItemDatas()
{
dic.Add(100, new ItemData(100, "장검", 0, 8));
dic.Add(101, new ItemData(101, "단검", 0, 5));
dic.Add(102, new ItemData(102, "활", 0, 6));
dic.Add(103, new ItemData(103, "도끼", 0, 10));
dic.Add(104, new ItemData(104, "사슬 갑옷", 1, 0));
dic.Add(105, new ItemData(105, "사슬 갑옷", 2, 0));
}
}
}
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks;
namespace Starcraft
{
internal class App
{
//생성자
public App()
{
DataManager.instance.LoadItemDatas();
}
}
}
https://ivorycirrus.github.io/TIL/csharp-singleton/
Dictionary의 검색은 왜 빠른가?
저장할 때 key값에 해시 함수를 적용해 고유 index를 만들어 저장하기 때문이다.
key를 알면 해시 함수를 통해 바로 index를 알 수 있으므로 O(1)의 시간복잡도를 갖는다.
https://wer3799.tistory.com/126
https://velog.io/@jujube0/Programmers-%EC%95%95%EC%B6%95
https://analytics4everything.tistory.com/180
'C# 기초 Homework' 카테고리의 다른 글
복소수와 사원수, 벡터 (1) | 2023.08.13 |
---|---|
Unity-Homework-몬스터 이동&공격(수정중) (2) | 2023.08.06 |
미션-보상 만들기 (2) | 2023.07.31 |
2048 (0) | 2023.07.26 |
20230719_Homework-디아블로_아이템사전 1~10 (0) | 2023.07.20 |