728x90 Study24 디자인 패턴, Singleton Pattern (단일 인스턴스 패턴) 싱글턴 패턴이란? 디자인 패턴하면 가장 흔하게 접하게 되는 패턴으로, static 클래스와 비슷하게 단일 인스턴스로 클래스를 사용하는 개념입니다. 예제 Singleton.cs public abstract class Singleton where T : Singleton, new() { private static T instance = null; public static T Instance { get { if (instance == null) { instance = new T(); instance.Initialize(); } return instance; } } ~Singleton() { Release(); } public static bool IsLive => instance != null; protect.. 2022. 1. 31. 디자인 패턴, Flyweight Pattern (경량 패턴) 경량 패턴이란? 같은 객체를 여러개 표현할 때, 고유 데이터는 공유하여 사용하는 패턴입니다. 기본적인 Call by reference의 개념 구조입니다. 객체를 여러개 표현하지만, 내부적으로는 참조 데이터 하나로 사용하는 개념이라고 할 수 있겠습니다. 특징 고유 데이터의 경우, 내부적으로 공유하는 데이터가 사용되기 때문에, 여러개의 객체를 표현해도 객체 개수보다 사용되는 메모리가 적습니다. 예제 Tree.cs using System.Collections; using System.Collections.Generic; using UnityEngine; public class Tree : MonoBehaviour { private static MeshRenderer _treeMeshRenderer = null.. 2022. 1. 30. 디자인 패턴, Observer Pattern (관찰자 패턴) 옵저버 패턴이란? 대상의 특정 행위가 일어나면 관찰자가 구독 중인 객체에게 브로드캐스팅(방송)하여 알려주는 패턴입니다. 특징 - 어떠한 한 행위에 대한 보고를 객체마다 일일이 참조해주지 않고 관찰자에게 구독하고 있으면 된다. - "Delegate event chain + 단일 인스턴스(Singleton Pattern)" 형태이다. 예제 NotificationCenter.cs (관찰자) public static class NotificationCenter { public delegate void Subscribe(string text); private static event Subscribe _subscribes = null; /// /// 구독 리스트 /// public static event Subsc.. 2022. 1. 29. 디자인 패턴, Build Pattern (생성 패턴) 빌드 패턴이란? 다양하게 옵션이 달린 객체를 생성할 때, 직관적으로 생성을 도와주는 디자인 패턴입니다. 조립 방법이 필요할 때 사용하면, 보다 편하게 사용하도록 유도합니다. 조립해주는 설계도가 따로 있으므로, 이로써 원형 클래스를 가볍게 만들 수 있습니다. 예제 Option.cs public class Option { public bool IsPlayBGM { get; private set; } = false; public bool IsEffectBGM { get; private set; } = false; public bool IsPush { get; private set; } = false; public class Builder { private Option option = new Option(); .. 2022. 1. 22. C#, 일반적인 Cast와 is, as 키워드 그리고 퍼모먼스 프로그래밍 언어 공부 중 형변환을 사용한다면 보편적으로 일반적인 Cast 방식을 사용합니다. private static void Main(string[] args) { int intValue = 0; long longValue = 2147483647; // = int.MaxValue intValue = (int)longValue; Console.WriteLine(intValue); // Result // 2147483647 } 위와 같은 방식으로 long형에서 int형으로 데이터형이 작은쪽으로도 변환이 가능합니다. (8byte to 4byte) 그렇다면 아래와 같은 방식은 어떨까요? private static void Main(string[] args) { int intValue = 0; long lon.. 2022. 1. 13. A* 알고리즘 구현 (Unity, C# 환경) 유니티에서 제공하는 NavMesh가 있지만, 이는 지형에 활용하는 개념이기에 그리드(Grid, Board)에서 움직이는 것을 구현하는 것에는 부적합합니다. 그래서 보통은 따로 개발을 하기도 합니다. 언젠가는 사용할 것 같아서(예를 들어 보드게임 같이 말이 움직이는 컨텐츠 구현), 개인적으로 공부하면서 작업을 해보고자는 생각에 공부 겸 글을 작성하게 되었습니다. 과거에도 한 번 구현하여 블로그에 배포한 적이 있었는데, 그때는 MFC를 통해서 구현한 것을 포스팅 및 배포했었습니다. 하지만 요즘은 전반적으로 툴을 주로 다루기도 하고, 제가 주로 유니티를 다루고 있어서, 이번에는 유티니에서 사용하여 보여드리겠습니다. 유니티를 통한 구현이지만 스크립트는 유니티 환경에 국한되지 않습니다. 알고리즘의 이해 1. 현재.. 2021. 12. 26. 이전 1 2 3 다음 반응형