2023/08/11 TIL

김도현·2023년 8월 11일
0

TIL

목록 보기
19/76

들어가기 앞서

어제 작성한 프로젝트를 토대로 PPT를 작성 후 발표하였습니다. 그리고 다른 프로젝트와 우리 프로젝트를 비교하였습니다.

오늘 배운 것

싱글톤

참조한 사이트 : Song-YunMin 블로그

싱글톤이란?

싱글톤은 전역 변수를 사용하지 않고 객체를 하나만 생성 하도록 함
생성된 객체를 어디에서든 참조할 수 있도록 하는 패턴
생성자가 여러 차제 호출되더라도 실제로 생성되는 객체는 하나
최초 생성 이후에 호출된 생성자는 최초에 생성자가 생성한 객체를 리턴한다.
환경설정 관리 클래스(Manager등등)나 커넥션 풀과 같이 pool형태로 관리되는 공통 클래스에 사용되는 것이 일반적

싱글톤의 특징

고정된 메모리 영역을 얻으면서 동시에 단 한번만 new를 사용하여 메모리 낭비를 방지
싱글톤으로 만들어진 인스턴스는 전역으로 사용됨. 즉, 다른 클래스의 인스턴스 들이 데이터를 공유하고 변경할 수 있다.
너무 많은 일을 위임하거나 공유할 경우 coupling이 많아지고 결합도가 높아진다.

싱글톤 패턴에 주의할 점

singleton Pattern 사용시 주의해야 할 점은, 상태를 가진 객체를 singleton 으로 만들면 안된다는 것입니다. 앱 내의 단 한개의 인스턴스가 존재하고, 이를 전역에서 접근할 수 있다면 각기 다른 스레드에서 객체의 상태를 마구잡이로 변경시킬 여지가 있습니다. 상태가 공유된다는 것은 매우 위험한 일이기 때문에 무상태 객체 혹은 설계상 유일해야하는 시스템 컴포넌트를 Singleton으로 만들어야 한다.

리팩토링에서의 영향도는 프로그램 전체가 된다.


Service A를 위해 만들어졌던 Singleton.Func1을 다른 서비스들이 사용하기 시작합니다.
Service A의 요구사항이 변경되어 Func1이 변경되면 이를 사용하는 모든 서비스들에게 변경 전파(Shotgun Surgery)가 이루어진다. 그리고 이러한 Coupling 문제를 개선하기 위해 Singleton을 리팩토링 할 때의 영향도(Force)는 어플리케이션 전체가 된다.

기억 할 것 & 진행 사항

싱글톤 금일 찾아본것 암기, 클래스 사용법 숙지(get, set), 제네릭(형식 매개 변수)

게임에 구현한다면?

게임내에서 클래스를 monobehaviour를 상속 받지않게하여 클래스로만 동작하게 하는 스크립트를 구성하여 사용할 것(프로그램이 가벼워진다)
gameManager처럼 Manager 즉 싱글톤으로 작성해야 되는 것들은 공통인 기능, 변수들만을 작성하여 최소화 하도록 노력해야 된다.

내일 할 일

내일 및 모레에는 이번 프로젝트를 통해 부족했던 자료구조 및 알고리즘, C#문법, 싱글톤, SOLID에 대해 찾아보고 공부할 것이다.

0개의 댓글