나 개발자 진짜 되냐?

[ 10月 28日 ] 오늘 내가 배운 것 _ 30日次 [ 디자인 패턴 ] 본문

오늘 공부를 정리해봐요!

[ 10月 28日 ] 오늘 내가 배운 것 _ 30日次 [ 디자인 패턴 ]

Snow Rabbit 2024. 10. 28. 21:08

 

 

오늘은 디자인 패턴에 대해서 배웠어요!

 

여기에 정리해 보자


디자인 패턴

이 디자인 패턴을 왜 썼는지가 중요하다

무지성으로 활용하는 것은 지양!

 

싱글톤

 

오브젝트 풀

 

전략

 

옵저버

 

상태

 

 

싱글톤

 

왜 쓸까?

중요하고 유일하게 존재하는 대상을 쉽게 접근하기 위해

 

접근이 잦은 핵심 기능에 대한 전역적 접근을 허용한다.

 

중요한 두 가지

 

1. 유일성

추가적으로 생기는 것을 제한하는 방법 필요

 

2. 참조 多

전역적으로 접근이 가능하다 public static을 통해 구현

 

싱글톤과 제너릭의 연계

 

 

제너릭은 일반화 프로그래밍이다.

치환이라고 생각해 주면 좋다.

 

프로그래밍에서 where는 조건이다.

 Where T : MonoBehaviour을 통해

모노 너만 T로 들어와! 가 된다.

 

제네릭으로 싱글톤을 쓸 때 중요한 건

awake, start 주의

모든 싱글톤은 dondestroyOnload 할 필요 없다

그래서

singleton <T>와

SingletonDontDestroy <T> 구분하는 것이 좋다.

 

 

오브젝트 풀

 

왜 쓸까?

할당/해제에 걸리는 성능 낭비와 메모리 낭비를 줄이고 싶어서

 

생성/ 파괴가 반복되는 오브젝트를 재활용하기 위해서

풀은 뽑힐 수 있는 대상을 묶은 단위

즉,

풀은 로또 공 뽑는 기계 같은 걸로 생각해 주면 좋다.

 

사용법

1. 필요한 만큼 미리 생성하고 비활 시켜준다

2. 생성 대신 비활성화 오브젝트를 찾아서 활성화

3. 만들어 둔 양 이상을 요구하면 추가생성

4. 파괴 대신 오브젝트 비활성화

 

 

필요한 만큼만 생성해줘야 하는 것이 중요

 

씬 로드 시 오브젝트 풀의 모든 오브젝트를 전부 다 생성해 준다.

즉 개수가 너무 많으면

씬 로드 시간을 매우 길게 만들어서

좋지는 않음

 

필요한 만큼만!

 

 

전략

 

왜 쓸까?

원본 클래스를 건드리지 않고 다양하게 추가되는 방식을 대응하고 싶어서

 

골프의 경우도

상황에 맞게 채를 바꾸듯

상황에 맞게 로직군을 바꿔주는 방식

 

우리가 생각하는 전략적! 이 아니라

코드들의 묶음을 교체 가능하게 한다.

 

이 전략패턴은

UI연출에 자주 쓴다.

 

UIView클래스에서 직접 하는 것이 아니라

UI를 보여주고 숨기는 방법을 

각 전략 인터페이스에서 가능하도록 구현

 

상태

 

왜 쓸까?

여러 상태들이 있고 실행되는 로직이 달라짐을 체계적으로 관리하고 싶음

 

idle, angry, dead와 같은

여러 상태를 두고 그 상태에 맞는 행동을 하게 한다.

 

좀비를 예로 들면

처음에는 그냥 걷다가

플레이어가 나타나면! 가까이 다가오고

진짜 가까워지면 공격한다

 

즉 상태에 따라 행동이 다른데

그 때문에 사용한다.

 

보통 

if문안에 if문 안에 if문 등등등

계속 조건조건조건조건

이렇게 이어질 때

 

상태코드로 간략하게 바꿀 수 있다.

 

FSM

유한 상태 기계라는 뜻

 

N개의 가능한 상태, 현재 상태, 상태 간의 전환으로 구성되어 있다.

 

 

 

더 나아가서

 

HFSM

Hierachial : 계층적

계층적 유한 상태 기계

 

큰 개념의 상태와 실제 행동을 결정하는 세부상태를 구분

 


다들 이해력이 참 좋은가보다

나는 

왕 어려웠는데

다들 별로 안 어려웠나 보다..

 

부럽다