컴퓨터 프로그래밍 공부

싱글톤 패턴 + 인스턴스 + 인스턴스화 + 추상화 + 더블 버퍼링 20230227

게임 개발 2023. 2. 28. 13:43

싱글톤 패턴이란?

 

어플리케이션이 시작될 때 어떤 클래스가 최초 한 번만 메모리를 할당하고(static)

그 메모리에 인스턴스를 만들어 사용하는 디자인 패턴이다.

 

싱글톤 패턴의 장점

  • 고정된 메모리 영역을 얻으면서 new로 인스턴스를 사용하기 때문에 메모리 낭비를 방지할 수 있다.
  • 싱글톤으로 만들어진 클래스의 인스턴스는 전역이기 때문에 다른 클래스의 인스턴스들이 데이터를 공유하기 쉽다.
  • 인스턴스가 절대적으로 한 개만 존재하는 것을 보증하고 싶을 경우 사용한다.
  • 두 번째 이용시 부터는 객체 로딩 시간이 줄어 성능이 좋아지는 장점이 있다.

 

이러한 장점을 가진 싱글톤 패턴은 DBCP (DataBaseCommection Pool) 처럼

공통된 객체를 여러개 생성해서 사용해야 하는 상황에서 많이 사용된다.

 

 

싱글톤 패턴의 단점

          

  • 싱글톤 인스턴스가 너무 많은 일을 하거나 데이터를 공유시킬 경우에 다른 클래스의 인스턴스들 간의

       결합도가 높아져 "개방-폐쇄 원칙"을 위배하게 된다.

 

  • 이는 객체 지향 설계 원칙에 어긋나기 때문에 수정이 어려워지고

        유지보수의 비용이 높이질 수 있다.

 

또한 멀티쓰레드 환경에서 동기화 처리를 안하면 인스턴스가 2개가 생성 될 수 있는 가능성이 생기게 된다.

이러한 이유로 싱글톤 패턴은 꼭 필요한 경우가 아니라면 지양해야 한다.

 

인스턴스란?

 

클래스 기반 객체 지향 프로그래밍에서 인스턴스 변수란,

클래스(즉, 멤버 변수)에 정의된 변수이며,

클래스의 인스턴스화된 각 객체는 별도의 복사본 또는 인스턴스를 가진다.

인스턴스 변수는 클래스 변수와 유사하지만 비정적(= non-static)이다.

인스턴스 변수는 클래스에서 선언되지만 생성자, 메서드 또는 블록 외부에 있는 변수이다.

인스턴스 변수는 개체가 인스턴스화될 때 생성되며 클래스의 모든 생성자, 메서드 또는 블록에 엑세스할 수 있다.

인스턴스 변수에 접근 제어자를 지정할 수 있다.

 

 

인스턴스화

 

구체적으로 C++에서는 어떤 클래스의 새로운 인스턴스를 생성하는 것을

인스턴스화라고 한다.

인스턴스화는 객체보다 좀더 좁은 개념으로

프로그래머가 직접적으로 사용하는 객체이다.

 

 

추상화

 

추상화란 사물을 사실적으로 표현하는 개념이 아니라 불필요한 부분을 제거하고

공통된 특징만 추출하여 간결하고 이해하기 쉽게 만드는 작업을 의미한다.

 

추상화는 객체지향 언어의 주요 특징 중에서도 첫 번째로 꼽는다.

그 이유는 클래스를 만드는 과정과 밀접한 관계가 있기 때문이다.

 

즉 표현하려는 실생활에 대한 공통적인 특징을 속성과 기능으로 구분하고

각각 멤버 변수와 멤버 함수로 만들어서 클래스로 표현하는 과정을 추상화라고 한다.

 

실생활을 클래스로 추상화할 때는 가능한 모든 요구 사항을 고려하여 보편적이고

일반화된 특징들을 추출해야 한다.

이렇게 추상화한 클래스를 통해 객체를 만들고,

이 객체를 통해 다양한 요구 사항을 수용할 수 있어야 한다.

 

추상화는 내부적으로 숨기는 세부적인 구현과

외부로 공개하는 인터페이스를 잘 구분하여 설계해야 한다.

 

 

더블 버퍼링

 

컴퓨터 그래픽스의 이론으로

화면 DC에 바로 그림을 그릴 경우 화면이 깜빡이는 현상이 발생하는데

그 현상을 해결하기 위해 메모리 DC를 만들고

그 메모리 DC에 그림을 그린 후 화면 DC로 한번에 복사하는 것을

더블 버퍼링이라고 한다.

'컴퓨터 프로그래밍 공부' 카테고리의 다른 글

정리 230319  (0) 2023.03.19
행렬  (0) 2023.03.02
호도법, 미리 컴파일 유의 사항 20230224  (0) 2023.02.24
삼각함수  (0) 2023.02.23
20230222 정리  (0) 2023.02.23