본문 바로가기

AS3

디자인 패턴에 대한 몇가지 오해와 생각...

 

Class를 접하게 되면 어느 시점에서 반드시 거쳐야하는 단계 중의 하나가 바로 디자인 패턴입니다.
이에 저를 비롯한 많은 분들이 하기 쉬웠던, 그리고 하기 쉬운 몇가지 오해와 그에 따른 생각들을 나눠볼까 합니다.


1. 디자인? 패턴? 프로그램 개발에 웬 디자인?
이름 자체만으로 보면 개발보다는 디자인에 관련된 것으로 보입니다. 이는 어느 관점에서 보느냐의 차이인데,
프로그램의 로직을 개발함에 있어서 어떠한 패턴으로 설계(Design)를 할 것이냐로 생각하시면 됩니다.


2. 고수만이 사용하는 고급 기술?
물론 그렇게 볼 수 도 있습니다. 한 칼하는 사람들은 저마다 나름의 남들 몰래 자기만 사용하는 비법들이 있습니다.
제대로된 디자인 패턴의 활용이야말로 엄청난 노가다를 막아주는 구세주 이기도 하니깐요.

하지만 Class 기반의 작업을 한다면 디자인 패턴을 기본으로 한 개발이 필수입니다.
디자인 패턴이라고 뭐 그리 거창한게 아니라 로직을 개발하는 과정에서 이 경우는 이렇게 접근,
요런 경우는 저렇게 접근하니 좋더라,,,이러한 내용들을 일종의 패턴으로 묶은 것이 바로 디자인 패턴입니다.
여러분은 이미 디자인 패턴을 자신도 모르게 활용하고 있습니다. addEventListener 를 사용하고 있다면
이미 여러분은 옵져버 패턴을 사용하고 있는 것입니다. 즉 디자인 패턴은 고급개발자가 되기 위한 필수이기도 하지만
초보자 역시 필수로 알아야 하는것입니다.

3. 별도로 명령들을 공부해야 하나요?
디자인 패턴은 일정한 공식이 있어서 이 명령을 써야 한다는 것이 아니라 일종의 컨셉입니다. 예를 들어 옵져버 패턴을 간단히
설명하자면 많은 여자분들이 유명 패션회사의 뉴스레터를 받기 위하여 등록을 했다고 가정합시다. 이때 뉴스레터
서비스를 제공하는 패션회사는 옵져버가 되고 서비스를 받는 여자분들은 구독자가 됩니다. 구독자들은 이제 마냥 뉴스레터가
오기만을 기다리는 입장이 되며 어느 날 패션회사에서 뉴스레터를 만들어 발송하게 되면 리스트에 등록된 구독자들에게 일괄적으로 뉴스레터가 발송이 됩니다.

위의 스토리가 바로 옵져버 패턴을 설명하는 상황이라고 할 수 있습니다. 서비스를 제어하는 곳은 한 곳이고
어떠한 변화가 있을때 이를 캐치하여 한번에 한 곳내지는 여러 곳에 동시에 이를 알리고 어떠한 일을 각각 하도록 하고자 할때
옵져버 패턴을 적용하면 보다 효율적인 로직 구현이 가능해집니다.

하지만 이는 어디까지나 컨셉적인 것이며 이를 플래시 개발시에 적용하고자 할때에는 여러가지 방식으로 구현이 가능합니다.
가장 전통적인 방식으로 가자면 옵저버 역할을 하는 클래스에 리스트 명단을 만들고 여기에 원하는 만큼의 오브젝트들을
등록해줍니다. 물론 각 오브젝트들에는 공통적으로 update라는 명령을 가지고 있다가 어느 시점에서 리스트에 등록된
모든 오브젝트들에 대하여 update명령을 실행하도록 명령을 내립니다. 만약 AS3의 최신 방식을 이용하게 된다면
addEventListener와 dispatch를 이용하여 보다 간단하게 구현이 됩니다.

즉 디자인 패턴이라는 개념을 이해만 해 두었다가 해당 패턴들이 힘을 발휘할수 있는 상황이 오면 이를 각각에 맞게 해당
프로그램에서 지원하는 기능들을 조합하여 적용하면 되는 것입니다.


4. 디자인 패턴을 꼭 써야 하나요?
만약 여러분중 Class 파일 하나 만들고 거기에 해당 페이지에서 원하는 모든 구현을 위한 코드를 작성하고 있다면
전 과감이 말하고 싶습니다. 당신은 Class를 사용하고 있는 것이 아니라구요. 이건 단지 기존의 AS1에서
프레임 기반의 스크립을 작성하던것을 클래스 파일 하나에 옮겨놓고서 '나 클래스기반의 작업한다' 고 하는 것입니다.

Class 의 진정한 이용은 바로 Class에 특화된 장점을 이해하고 이를 최대한 살리는 접급법에서 나와야합니다. 이러한 접근을 도와주는 것이 바로 디자인 패턴입니다. 단적인 예를 들겠습니다. 로그인 페이지가 있습니다. 이를 위하여 스테이지에 텍스트 필드와 버튼들을 배치하고선 클래스 파일하나에 이들을 제어하기 위한 설정과 명령들을 작성했다고 합시다. 이건 굳이 클래스로 할 필요도 없이 그냥 프레임에 AS1 기반으로 작성하면 되는것입니다. 굳이 클래스 파일 만들고 이를 이용할 이유가 없습니다.
자 그럼 어떻게 해야 하냐,,,, MVC를 이용해 보겠습니다. Model:정보를 담는 클래스, View:화면에  뿌려지는 것들을 다룰 클래스, 그리고 Controller(사용자의 인터렉션에 반응하여 어떻게 할지를 결정하는 클래스)라는 최소 3개의 클래스를 만들게 되고 이 3개의 클래스들이 서로 상호 작용을 함으로써 로그인 페이지를 구현하게 됩니다. 그리고 좀더 제대로 가게 되면 버튼에 대한 클래스도 별도로 존제하게 되고 사운드 제어, 비디오 제어등,,,모든 요소들에 대한 클래스가 별도로 작성되어지게 됩니다.

자 여러분은 지금 어떤 식으로 클래스를 쓰고 있나요? 만약 전자라면 진짜 고민해 보시기 바랍니다. 내가 과연 클래스 기반의
작업을 하고 있는것인지?

로마에선 로마법을 따르라고 했습니다. 클래스를 쓰고 싶다면 그 새로운 룰을 따라야 하는데 디자인 패턴이 그 핵심입니다.


5. 그럼 플래시에서는 어떤 디자인 패턴들이 일반적으로 적용되는가?
플래시 사이트 개발시에 많이 적용되는 패턴들이 바로 옵져버 패턴, 싱글톤패턴, MVC 패턴입니다.
이 3가지 정도만 제대로 다루어도 웬만한 작업은 개발이 가능합니다. 물론 보다 많은 패턴들을 익혀 이를 적용할
수 있다면 베스트일것입니다.

참고로 이미 언급한적이 있지만 외국의 잘 나가는 웹 에이전시들은 이미 Class 기반으로 작업을 하고 있으며
디자인 패턴은 가장 기본적인 요소로 언급되어집니다. 즉 대부분의 회사들이 플래시 개발자를 뽑을때 디자인 패턴을
이해하고 이를 적용한 작업이 가능한지를 기본적으로 봅니다.
이게 가능하지 않으며 개발자들간의 공동작업이 불가능하기 때문입니다.




ps) 사담이긴 하지만 CS3 그리고 올해안에 출시될 CS4를 제대로 사용하기 위해서는 Class 기반의 작업이 필수이며
웹 에이전시 또한 그 예외일 수 없을것입니다. 해외 유명 웹 에이전시에서는 이미 AS2때부터 Class 기반의 작업이 기본이 되었습니다.
저희 회사만 보더라도 플래시 개발자 채용시에 만약 아웃풋 퀄러티가 굉장히 좋아 뽑고 싶은데 클래스 기반의 작업을 모른다면
몇개월간은
클래스 기반하에 디자인 패턴을 적용하는 기초 훈련만 몇 개월을 시키고 이 훈련이 끝나야지만 메인 개발자로서의
역할을
주게 됩니다.
앞으로도 난 플래시 디벨로퍼다라도 자신있게 말하고 싶다면 지금이라도 늦지 않았습니다. Class 기반의 작업으로 하루라도 빨리 전향을 하길 권합니다.


원본출처 : 카페 > 플래시 액션스크립트 - Fl.. | 윤용호
원문 : http://cafe.naver.com/flashactionscript/12646

'AS3' 카테고리의 다른 글

클래스구조  (2) 2009.07.03
AS3 Code Library  (0) 2009.07.02
Papervision 3D 튜토리얼  (0) 2009.07.02
이클립스 자동완성기능 플러그인 설치  (2) 2009.07.02