본문 바로가기

Study/개념 정리27

[Study] 팩토리 패턴 팩토리 패턴이란?팩토리 패턴이란 객체 생성에 관한 디자인 패턴이다.상속 관계에 있는 두 클래스에서 상위 클래스가 중요한 뼈대를 결정, 하위 클래스는 객체 생성에 관한 구체적인 내용을 결정하는 패턴이다.즉, 한 클래스에서 객체를 생성하는 역할을 파생 클래스에게 넘겨 수행하게 하는 것이다. 팩토리 패턴의 장점은 다음과 같다.1. 상위 클래스와 하위 클래스가 분리되어 느슨한 결합을 가진다.2. 상위 클래스는 인스턴스 생성 방식에 관해 알지 못하므로 다형성을 가진다.3. 새로운 기능을 추가할 때 해당 객체만 변경하면 되므로 유연성이 높아진다.4. 코드 리팩토링시 유지보수가 용이하다. 더보기Enum이란?상수의 집합을 정의할 때 사용되는 타입본질적으로 Thread Safe 하다 -> 싱글톤 패턴에 도움이 된다. T.. 2024. 11. 4.
[Study] SCC (강한 연결 요소) SCC (Strongly Connected Component)란?- 어떤 두 정점을 잡든 서로 도달할 수 있는 경로가 있는 부분 방향 그래프- 유향 그래프 (방향이 있는 그래프)만 SCC를 가진다.- 한 그래프 내에 여러 개의 SCC가 존재할 수 있다.- 같은 SCC 모음 내의 노드는 어떤 경로를 통하더라도 다른 노드를 향해 갈 수 있어야 한다.   즉, 같은 강한 연결 요소에 속하는 정점들은 서로 이동할 수 있는 방향 경로가 반드시 존재한다.- 시간복잡도 O(V+E)를 가진다.   SCC 알고리즘 구현 방법코사라주 알고리즘- 주어진 방향 그래프의 역방향 그래프와 스택을 사용하여 SCC를 구하는 알고리즘.- 방향 그래프와 역방향 그래프가 동일한 SCC를 구성한다는 것을 이용함.알고리즘1. 주어진 방향그.. 2024. 11. 4.
[Study] 싱글톤 패턴 싱글톤 패턴이란?하나의 클래스가 오직 하나의 인스턴스만을 가지는 패턴이다.하나의 클래스를 기반으로 여러 개의 인스턴스(메모리에 할당된 객체)를 만들 수 있다.하지만 하나의 인스턴스만을 가지는 클래스를 통해 로직을 설계해야 하는 경우가 생길 수 있다. 싱글톤 패턴은 다음과 같은 상황에 많이 쓰인다.- 데이터베이스 연결 모듈- 게임 로직 설계 시 매니저 관리   싱글톤 패턴의 장점1. 인스턴스 생성 비용이 적다.하나의 인스턴스를 다른 모듈이 공유하며 사용하기 때문에, 추가적인 인스턴스를 생성하지 않아도 된다.따라서 인스턴스를 생성할 때 드는 비용을 절감할 수 있다.  싱글톤 패턴의 단점1. 의존성이 높아진다싱글톤 패턴을 사용하는 모듈간의 결합이 매우 높아진다.모듈간의 결합도가 높으면 한 클래스 수정하면 다른.. 2024. 10. 3.
[Study] 디자인 패턴 디자인 패턴이란?프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 하나의 규약 형태로 만들어 놓은 것 아래에 각 패턴에 대한 공부 내용을 하나씩 업로드 할 예정이다. 싱글톤 패턴 [Study] 싱글톤 패턴싱글톤 패턴이란?하나의 클래스가 오직 하나의 인스턴스만을 가지는 패턴이다.하나의 클래스를 기반으로 여러 개의 인스턴스(메모리에 할당된 객체)를 만들 수 있다.하지만 하나의 인스턴스만jeongeunji1127.tistory.com 팩토리 패턴 [Study] 팩토리 패턴팩토리 패턴이란?상속 관계에 있는 두 클래스에서 상위 클래스가 중요한 뼈대를 결정, 하위 클래스는 객체 생성에 관한 구체적인 내용을 결정하는 패턴이다.상위 클래스와 하위 클래스가 분리jeongeun.. 2024. 10. 1.
[Study] MVC 패턴 MVC패턴은 디자인패턴 중 하나이다. MVC 는 Model, View, Controller의 약자이다.하나의 애플리케이션, 프로젝트를 구성할 때 그 구성요소를 세가지의 역할로 구분한 패턴이다. 모델1. 사용자가 편집하길 원하는 모든 데이터를 가지고 있어야 한다. 2. 뷰나 컨트롤러에 대해서 어떤 정보도 알지 말아야 한다. 3. 변경이 일어나면, 변경 통지에 대한 처리방법을 구현해야만 한다.  뷰 1. 모델이 가지고 있는 정보를 따로 저장해서는 안된다. 2. 모델이나 컨트롤러와 같이 다른 구성요소들을 몰라야 된다. 3. 변경이 일어나면 변경통지에 대한 처리방법을 구현해야만 한다.  컨트롤러 1. 모델이나 뷰에 대해서 알고 있어야 한다. 2. 모델이나 뷰의 변경을 모니터링 해야 한다.  ​서로 분리되.. 2024. 8. 1.
[Study] 네트워크 & 렌더링 파이프라인 네트워크 프로토콜 (IP, TCP, UDP)네트워크 프로토콜이란 데이터를 주고받는 데이터 통신을 원활하게 하기 위해 미리 정해놓은 통신 규약이다.  Application 계층- 사용자와 바로 연결되어 있다.- 사용자로부터 정보를 입력받아 하위 계층으로 전달 or 하위 계층에서 전송한 데이터를 사용자에게 전달Presentation 계층- 받은 데이터를 인코딩 or 디코딩하여 데이터의 형식을 정해주는 계층 Session 계층- 네트워크 상 양쪽 연결을 관리하고 연결을 지속시켜주는 계층- TCP/IP 세션을 만들고 없애는 역할 Transport 계층- 데이터가 실제로 전송될 때 신뢰성을 보장하기 위한 계층이다.- 데이터 패킷이 정상적으로 전달되었는지 확인하고, 정상적으로 전달되지 못했다면 재전송하는 역할.- .. 2024. 7. 26.
[Study] 게임수학 월드 스페이스 (World Space) 와 로컬 스페이스 (Local Space)의 차이동일한 오브젝트를 기준으로 월드 스페이스에서의 포지션을 월드 포지션,로컬 스페이스에서의 포지션을 로컬 포지션이라고 부른다.월드 포지션은 전체 3D 월드의 원점(0,0,0)을 기준으로 오브젝트의 절대적인 위치를 의미,로컬 포지션은 부모 오브젝트를 기준으로 오브젝트의 상대적인 위치를 의미한다.  벡터의 내적과 외적을 어느 상황에 사용할 수 있는가?내적1. 두 벡터 사이의 각도2. 물체가 앞에 있는지 뒤에 있는지 판별3. 시야각 내에 물체 판별 외적 1. 좌 우 판별 출처 -  [유니티] 게임에서 Vector의 내적, 외적이 갖는 의의보통 고등학교 때 기하와 벡터를 다루며 기본적으로 내적과 외적을 배우는데, 다들 전문적인 .. 2024. 7. 24.
[Study] 멀티스레드 & GPU 프로세스와 스레드의 차이?   - 프로세스는 독립된 힙 메모리 영역을 할당받고, 그 프로세스 내의 쓰레드는 독립된 스택 메모리 영역을 할당받는다. - 여러 작업을 수행해야할 때 스케쥴링이 이루어진다    (스케쥴링 : 어떤 쓰레드 작업을 먼저 수행할지, 어떤 쓰레드를 더 많이 수행해야 효율적인지)   Unity에서 Main Thread가 아닌 다른 스레드에서 Transform을 변경할 수 있을까?Unity의 대부분의 엔진 API는 메인 스레드에서만 안전하게 호출될 수 있다.따라서 Main Thread가 아닌 다른 스레드에서 Transform을 변경할 수 없다. 하지만 Unity MainThread Dispatcher 함수를 활용하면 다른 스레드에 접근이 가능하다. Task를 활용해서 타 스레드에 접근할 .. 2024. 7. 23.
[Study] JSON과 직렬화 확인 문제public class SomeClass : MonoBehaviour{ [SerializeField] private int intValue = 2; private void Start() { Debug.Log(intValue); }} 1. 인스펙터에서 intValue의 값을 3으로 변경하고, intValue 앞에 선언된 [SerializeField] 제거 후 Debug.Log(intValue);의 출력 결과 -> 2intValue가 더 이상 직렬화되지 않으므로 스크립트 컴파일 시 2가 출력된다.  2. 인스펙터에서 intValue의 값을 3으로 변경하고, intValue 앞에 [HideInInspector]를 추가 후  Debug.Log(intValue);의 출력 결과.. 2024. 7. 22.