관찰자 패턴(Observer Pattern)
·
Software Engineering/Design Pattern
관찰자 패턴객체 사이에 일 대 다의 의존 관계를 정의해 두어, 어떤 객체의 상태가 변할 때 그 객체에 의존성을 가진 다른 객체들이 그 변화를 통지받고 자동으로 업데이트될 수 있게 만듭니다.모델-뷰-컨트롤러(Model-View-Controller) 즉 MVC 패턴은 많이 사용되는데, 그 기반에는 관찰자 패턴이 있습니다. 관찰자 패턴이 워낙 흔하다 보니 자바에서는 아예 핵심 라이브러리(java.util.Observer)에 들어가 있고, C#에서는 event 키워드로 지원합니다.관찰자 패턴은 GoF 패턴 중에서도 가장 널리 사용되고 잘 알려져 있습니다. 업적 달성업적 시스템을 추가한다고 해봅시다. '괴물 원숭이 100마리 죽이기' 나 '다리에서 떨어지기'와 같은 특정 기준을 달성하면 배지를 얻을 수 있는데 배..
경량 패턴
·
Software Engineering/Design Pattern
경량 패턴공유(Sharing)을 통해 많은 수의 소립(fine-grained) 객체들을 효과적으로 지원합니다.여러 게임에서 볼 수 있는 숲이나 여러 배경과 같은 장면들을 제작할때에 '경량' 패턴으로 종종 구현 하기도 합니다. 숲에 들어갈 나무들숲을 글로는 몇 문장으로 표현할 수 있지만, 실시간 게임으로 구현하는 것은 전혀 다른 이야기 입니다. 나무들이 화면을 가득 채운 숲을 볼 때, 그래픽스 프로그래머는 1초에 60번씩 GPU에 전달해야 하는 몇백만 개의 폴리곤을 보고 있습니다.수천 그루가 넘는 나무마다 각각 수천 폴리곤의 형태로 표현해야 하고, 설사 메모리가 충분하다고 해도, 이런 숲을 그리기 위해서는 전체 데이터를 CPU에서 GPU로 전달해야 합니다. 나무마다 필요한 데이터는 다음과 같습니다.줄기, ..
명령 패턴
·
Software Engineering/Design Pattern
명령 패턴 (Command)명령 패턴이란 요청 자체를 캡슐화하는 것입니다. 이를 통해 요청이 서로 다른 사용자(client)를 매개변수로 만들고 요청을 대기 시키거나 로깅하며, 되돌릴 수 있는 연산을 지원합니다.간단하게 표현하자면 명령 패턴은 메서드 호출을 실체화한 것입니다.여기서 말하는 '실체화'는 '실제하는 것으로 만든다' 라는 뜻. 즉, 명령 패턴은 매서드 호출(함수 호출)이라는 행위를 데이터화(객체화) 한다는 의미입니다. 메서드를 호출하는 행위를 하나의 객체로 감싸서, 이 객체를 변수에 담거나, 전달하거나, 저장하거나, 할 수 있게 만드는것 입니다.명령 패턴을 사용할 수 있는 예제를 한번 살펴보겠습니다.입력키 변경모든 게임에는 버튼이나 키보드, 마우스를 누르는 등의 유저 입력을 읽는 코드가 있습니..