[C#] 싱글톤 패턴 사용

네,가능합니다 ㅣ 2024. 9. 30. 10:33

TextRpg만들기 팀 프로젝트 중 객체지향적이고 성능적으로 우수한 방향성으로 개발하기로 했고,

저장된 Player데이터를 가져오는 방법에서 매개변수로 불러오는것을 남발하게 되면

함수를 호출할때마다 매개변수를 가져오는 과정이 성능적으로 좋지 못하다는 부분때문에

Player의 데이터를 모두 가지고 있는 Player Class를 싱글톤화 시켜 사용하기로 했다.

 

우선 싱글톤화 시킬 Player Class에서

 

Player 클래스를 인스턴스화 하고

parivate static Player instance;

Player 인스턴스를 get 할때 인스턴스가 비어있다면 (생성자로 인해 name값을 넣어줘야함)

인스턴스에 Player를 넣어주고 값을 반환

public static Player Instance
{
    get
    {
        if (instance == null)
        {
            instance = new Player("Default Name"); // 기본 플레이어 생성
        }
        return instance;
    }
}

 

 

 

이렇게 인스턴스화 한 Player 객체에 접근하는 방법

 

public class Amolajamwa
{
	public void HelloPlayer()
    {
    	Player playerData = Player.Instance;
        Console.WriteLine($"{playerDate.name}님, 안녕하세요")
    }
}

 

 

위와같은 방법으로 접근이 가능하다.

Player playerDate = Player.Instance; //이부분에서 playerDate에 Player의 인스턴스를 넣어주고 사용하는것이다.

 

class에서 해당 데이터를 여러 메서드에서 사용하는 경우

아래와같이 class에서 선언후 메서드에서 사용할 수 있다.

public class Amolajamwa
{
	Player playerData = Player.Instance;
    
	public void HelloPlayer()
    {
        Console.WriteLine($"{playerDate.name}님, 안녕하세요")
    }
}