
요청 자체를 캡슐화하는 것이다. 이를 통해 요청이 서로 다른 사용자를 매개변수로 만들고, 요청을 대기시키거나 로깅하며, 되돌릴 수 있는 연산을 지원한다. (GoF의 디자인 패턴 311p)서로 다른 클래스의 비슷한 종류의 메서드를 하나로 묶어 객체지향적으로 표현한 것을
공유를 통해 많은 수의 소립 객체들을 효과적으로 지원한다. (GoF의 디자인 패턴 265p)많은 객체가 사용하는 공통된 데이터나 속성을 하나의 클래스로 묶어서 이 클래스를 많은 객체가 공유하도록 만들어서 데이터 크기를 줄이는 기법이다. 그래픽이 높은 게임에서 자주 사용

객체 사이에 일 대 다의 의존 관계를 정의해두어, 어떤 객체의 상태가 변할 때 그 객체에 의존성을 가진 다른 객체들이 그 변화를 통지 받고 자동으로 업데이트될 수 있게 만듭니다.(GoF 디자인패턴 p.382)

원형이 되는 인스턴스를 사용하여 생성할 객체의 종류를 명시하고, 이렇게 만든 견본을 복사해서 새로운 객체를 생성합니다.(GoF의 디자인 패턴 169p)특정 클래스들과 1대1로 연관되는 새로운 클래스들을 만들 때 연관된 클래스들을 하나의 클래스로 만들어서 클래스 수를 줄
전역 접근 없이 클래스 인스턴스 한 개를 보장하는 방법

객체의 내부 상태에 따라 스스로 행동을 변경할 수 있게 허가하는 패턴으로, 이렇게 하면 객체는 마치 자신의 클래스를 바꾸는 것처럼 보입니다.(GoF의 디자인 패턴 395p)캐릭터의 상태들을 클래스로 분리해서 특정 이벤트가 발생하면 상태가 전환되어 그 상태를 캐릭터가 가
게임 시간 진행을 유저 입력, 프로세서 속도와 디커플링한다.게임 루프는 게임하는 내내 실행된다. 한 번 돌 때마다 멈춤 없이 유저 입력을 처리한 뒤 게임상태를 업데이트하고 게임화면을 렌더링한다. 시간흐름에 따라 게임플레이 속도를 조절한다.플랫폼의 이벤트 루프에 맞춰야
컬렉션에 들어 있는 객체별로 한 프레임 단위의 작업을 진행하라고 알려줘서 전체를 시뮬레이션한다.게임 월드는 객체 컬렉션을 관리한다. 각 객체는 한 프레임 단위의 동작을 시뮬레이션하기 위한 업데이트 메서드를 구현한다. 매 프레임마다 게임은 컬렉션에 들어 있는 모든 객체를
가상 머신 명령어를 인코딩한 데이터로 행동을 표현할 수 있는 유연함을 제공한다.명령어 집합은 실행할 수 있는 저수준 작업들을 정의한다. 명령어는 일련의 바이트로 인코딩된다. 가상 머신은 중간 값들을 스택에 저장해가면서 이들 명령어를 하나씩 실행한다. 명령어를 조합함으로
상위 클래스가 제공하는 기능들을 통해서 하위 클래스에서 행동을 정의한다.상위 클래스는 추상 샌드박스 메섲드와 여러 제공 기능을 정의한다. 제공 기능은 protected로 만들어져 하위 클래스용이라는 걸 분명히 한다. 각 하위 클래스는 제공 기능을 이용해 샌드박스 메서드
공유되는 정보가 있다면 몇 개의 클래스 만으로 수백 개의 하위 클래스를 표현할 수 있다.
한 개체가 여러 분야를 서로 커플링없이 다룰 수 있게 한다.
메시지나 이벤트를 보내는 시점과 처리하는 시점을 디커플링한다.
서비스를 구현한 구체 클래스는 숨긴 채로 어디에서나 서비스에 접근할 수 잇게 한다.
CPU 캐시를 최대한 활용할 수 있도록 데이터를 배치해 메모리 접근 속도를 높인다.
불필요한 작업을 피하기 위해 실제로 필요할 때까지 그 일을 미룬다.
객체를 매번 할당, 해제하지 않고 고정 크기 풀에 들어 있는 객체를 재사용함으로써 메모리 사용 성능을 개선한다.
객체를 효과적으로 찾기 위해 객체 위치에 따라 구성되는 자료구조에 저장한다.
여러 순차 작업의 결과를 한 번에 보여준다.1\. 교체 연산 자체에 시간이 걸린다.2\. 버퍼가 두 개 필요하다. (메모리가 한 개 더 필요하다.)