프로그래밍/디자인패턴

[디자인패턴] 싱글톤

FORHAPPy 2022. 1. 3. 18:43

좋은 구조란? 뭔가를 고쳐야 할때 그럴줄 알았다는 듯이 코드가 준비되어있는걸 의미한다.

 

프로그래밍에서 가장 오래 걸리는 부분은 기존 코드를 이해하는 부분이다.

 

그렇기 때문에 작업에 들어가기 전에 알아야 할 지식의 양을 줄이는 것이 소프트웨어 구조의 핵심 목표이다.

 

커플링이 적은 코드일 수록 변경하였을때 나머지 게임코드에 미치는 영향이 적다.

 

소프트웨어 구조와 추상화가 게임의 성능을 저하시킨다는 비판도 있다.

 

코드르르 유연하게 만드는 많은 패턴이 가상함수, 인터페이스, 포인터, 메시지 같은 메커니즘에 의존하는데 다들 어느정도 런타임 비용을 요구한다.

 

성능은 가정에 기반하고 최적화기번ㄴ은 구체적인 제한을 선호한다.

적이 256개 이하일거라고 확신하면 ID를 1바이트로 압축할 수 있다.

한 자료형의 한 메서드만 호출한다고 확신하면  가상함수없이 정적으로 바인딩된 함수를 바로 호출 하거나 인라인으로 작성할 수 있다.

오든 개채가 같은 클래스라고 확신한다면 배열에 전부 깔끔하게 집어 넣을 수 있다.

 

처음에는 코드를 유연하게 유지하다가 기획이 확실해진 다음에 추상계층을 제거해 성능을 높이는 타협안도 있다.

 

디자인 패턴의 종류 

  1. 명령
  2. 경량
  3. 관찰자
  4. 프로토타입
  5. 싱글턴
  6. 상태

 

 

싱글톤 패턴

:  오직 한개의 클래스 인스턴스만을 갖도록 보장하고, 이에 대한 전역적인 접근점을 제공한다.

 

남용되는 패턴이기 때문에 싱글턴을 피할 방법을 다룬다.