@ 16. 1 ~ 17. 1/디자인 패턴
-
객체 풀@ 16. 1 ~ 17. 1/디자인 패턴 2016. 12. 26. 19:23
메모리 단편화를 막기 위한 방법 중 하나결론은 메모리를 크게 한번에 잡아놓고 계속 들고 있으면서 마음껏 객체를 할당, 해제하는 것이다. 1. 먼저 재사용 가능한 객체들을 모아놓은 객체 풀 클래스를 정의한다.2. 여기에 들어가는 객체는 현재 자신이 사용 중인지 여부를 알 수 있는 방법을 제공해야 한다.3. 풀은 초기화할때 사용할 객체들을 미리 생성하고(보통 같은 종류의 객체를 연속된 배열에 넣는다.), 그리고 사용안함으로 초기화한다.4. 새로운 객체가 필요하면 풀에 요청을 하고, 요청된 풀은 사용 중으로 초기화해서 반환하고..더이상 사용안하면 사용안함으로 초기화 보통 시각적 효과같이 눈으로 볼 수 있는 것에 많이 사용된다. 물론 사운드도 해당한다. 어쨌든 다음과 같을때 사용한다.- 객체를 빈번하게 생성, ..
-
컴퍼넌트 패턴 & 이벤트 큐 정리@ 16. 1 ~ 17. 1/디자인 패턴 2016. 12. 26. 18:59
보통 다른 코드는 서로 격리해야 한다고 배운다.한클래스안에서 많은 내용을 처리하게 된다면 하나 수정에 엄청나게 많은 작업이 필요하다는것 이다.머잖아 이런 클래스는 기능보다 버그가 더 빨리 늘어난다. 디커플링 패턴이 컴퍼넌트 패턴임.. 예를 들어 if(물리상태 && 그래픽 상태 != 안보임)플레이 사운드 이런 코드가 있다면 전부 알아야 한다. 보통 하나가 게임 코드를 분야별로 스레드에 분배하는 것이다. 각각...이렇게 하려면 디커플링이 되어야 하는데.. 커플링과 코드 길이 문제는 서로 악영향을 미친다. 한 클래스가 너무 많은 분야를 건드리다 보니 모든 프로그래머가 그 클래스를 작업해야 하는데, 클래스가 너무 크다 보니 작업하기가 굉장히 어렵다. 이런 상황이 심해지면 프로그래머들이 뒤죽박죽이 된 클래스를 손..
-
중재자 패턴@ 16. 1 ~ 17. 1/디자인 패턴 2016. 2. 1. 20:41
정의 다수의 객체를 다뤄야 하는 경우 주로 사용한다. 서로 관련된 객체를 복잡한 연관 관계를 한 곳으로 집중시키고자 하는 경우 이 객체들간의 “중재자”가 되어 그들이 서로를 알지 못하더라도 다른 객체에게 정보를 전달할 수 있다. 장점 중재자 클래스를 사용함으로써 각 클래스를 정의할 때 다른 객체를 참조할 필요 없이 중재자만 참조. 여러 객체들에게 분산될 행위를 한 곳으로 모아 객체간의 결합도를 낮춘다. M:N의 관계를 M:1의 관계로 바꿔주어 관리, 확장, 재사용성이 높아진다. 객체들간의 상호 연관 관계를 중재자에서 구현함으로써 객체의 행위와 무관하게 객체간의 관계를 다룰 수 있다. 단점 객체들 간의 모든 연관 관계를 집중하기 때문에 규모가 커지고 복잡해질 수 있다. 클래스 다이어그램 학원에서 작성한 중..