본문 바로가기

C#

[C#]Singleton패턴 상속으로 사용하기 feat.Interface

1. 서론

설명은 유니티 글에 자세히 적어두었습니다.

게시글 맨 아래입니다. 고객님

2. 본론

코드만 바로 보겠습니다.

    public class Test2 : JHYSingletonNotUsedMono<Test2>
    {
        public Test2()
        {
            CreateNotUsedMono(this);
        }
    }

싱글턴 생성 방법: 자기 자신을 함수에 넣어주면 됩니다.

 

    //모노없는 싱글턴 방식
    interface JHYISingletonNotUsedMono<U> where U : class
    {
        void CreateNotUsedMono(U _class);
    }

인터페이스 생성도 마찬가지로 T 자리를 class를 강제합니다

    //모노 없는 방식
    //생성자에 크리에이트낫유즈모노로 생성후에 ㄱㄱ
    public class JHYSingletonNotUsedMono<U> : JHYISingletonNotUsedMono<U> where U : class
    {
        public static U InstanceNotMono = default;
        public void CreateNotUsedMono(U _class)
        {
            if (InstanceNotMono == null)
            {
                InstanceNotMono = _class;
            }
            else if (InstanceNotMono.Equals(_class))
            {
                InstanceNotMono = null;
            }
        }
    }

 

Mono 없는 방식은 mono만 뺀 인터페이스만 있는 방식이면 됩니다.

같이 T 자리를 class로 강제해주고 static으로 선언해주시면 되겠습니다.

    public class Test : MonoBehaviour
    {
        private void Update()
        {
            if (Input.GetKeyDown(KeyCode.W))
            {
                Test2 w = Test2.InstanceNotMono;
            }
        }
     }

 

윈폼이나 콘솔 프로그래에선 테스트 방식이 다르겠지만, 유니티에서는 이런 식으로 테스트하시면 됩니다.

물론 윈폼이나 콘솔 등등 C#베이스로 쓰실경우에 사용법은 같으나 update()는 없겠죠?

3. 결론

 

유니티 버전은 아래쪽 글에

 

[Unity3D]Singleton 인터페이스로 써보기

1. 서론 본 글은 Interface의 이해와 제너릭클래스(템플릿)에 대한 이해가 필요하므로 구체적인 설명이 들어갈 수도, 없을 수 도 있으니, 양해 부탁드립니다. 간단히 코드만 넣어 활용방법만 설명 하려 했으나 말..

s-sense.tistory.com

 

'C#' 카테고리의 다른 글

[C#] 벡터의 내적  (0) 2019.10.11
[C#] 시리얼 통신 데이터 주기(RS232)  (0) 2019.09.16