디자인패턴 : MVC MVC 디자인패턴 - 유저가 입력한 데이타와 외부 출력을 위한 모델, 유저의 응답 처리하는 세 가지 타입 오브젝트로 명백히 구분하고, 각 오브젝트들은 자신이 맡은 임무에 대해서만 책임진다. 디자인패턴 구성 Model의 책임과 임무 - 모델은 속성에 데이터를 저장하고 외부로부터 데이터를 가져오거나 설정하는 메소드를 제공한다. 애플리케이션에서 상황에 맞게 메소드를 변형하고, 컨트롤러와 뷰가 메소드를 반드시 알고 있어야 한다. 또한 모델은 뷰를 등록하고 해지할 수 있는 방법을 제공해야 하며, 모델은 등록된 뷰의 목록을 관리해야 한다. 모델은 내부의 정보에 변화가 생길 때마다, 자신에게 등록된 모든 뷰에게 그 사실을 알려주어야 한다. Model의 기본구조 - 모델은 기본적으로 옵저버 클래스를 상속받으므로써, 뷰.. 더보기 디자인패턴 : Observer 감시자 디자인패턴 - 옵저버 패턴은 오브젝트 사이의 일 대 다 대응 관계를 정의한다. 즉 하나의 Observable 클래스에 여러개의 observer 클래스가 등록되어 관리되는 관계를 의미한다. 옵저버패턴은 OOP를 구현하기위한 핵심 디자인패던 이다. 클래스구성 데이터와 로직을 구현하고, 옵저버리스트를 관리하는 역할을 하는 Observable 클래스. MVC 디자인패턴에서 Model 클래스의 부모클래스 이기도 하다. 자주 사용되는 패턴이기 때문에 보통 util 폴더에 관리한다. package util { import util.Observer; //클래스타입을 맞춰주기 위한 용도 public class Observable { private var observers: Array; public function.. 더보기 디자인패턴 : Singleton 단일체 디자인패턴 - 오직 한 개의 클래스 인스턴스만을 갖도록 보장하고, 이에 대한 전역적인 접근점을 제공한다. 클래스 설명 AS3.0 에서 사용하는 가장효율적인 싱글턴패턴의 구조입니다. AS3.0에서는 new 연산자를 이용해서 인스턴트를 만들 때 생성자의 실행을 막을 방법이 존재하지 않습니다. 2.0에서는 접근제한자를 private로 선언해서 접근을 막을 수 있었지만 3.0에서는 생성자 함수에 private 키워드를 사용할 수 없습니다.그래서 컴파일타임 시 클래스 내부 static변수에 인스턴트를 할당하고 getInstance() 정적메소드를 이용해서 인스턴트를 반환 받으므로써 싱클턴클래스의 유일성을 보장받을 수 있습니다. 클래스 사용예제 var singleton: Singleton = new Sing.. 더보기 디자인패턴 : Command 명령 디자인패턴 - 요청 자체를 캡슐화하는 것이다. 이를 통해 요청이 서로 다른 사용자를 매개변수로 만들고, 요청을 대기시키거나 로깅하며, 되돌릴 수 있는 연산을 지원한다. 클래스설명 커맨드패턴은 다음과 같은 일을 하고자 할때 주로 사용된다. 1. 수행할 동작을 객체로 매개변수화하고자 할 때 사용한다. 절차지향 프로그램에서는 이를 콜백함수, 즉 어딘가 등록되었다가 나중에 호출되는 함수를 사용해서 이러한 매개변수화를 표현할 수 있다. 커맨드패턴은 콜백을 객체지향 방식으로 나타낸 것이다. 2. 서로 다른 시간에 요청을 명시하고 저장하며, 실행하고 싶을 때, 커맨드객체는 원래의 요청과 다른 생명주기가 있다. 요청을 받아 처리하는 객체가 주소 지정 방식과는 독립적으로 표현될 수 있다면, 커맨드 객체를 다른 프로.. 더보기 디자인패턴 : Composite 복합체 디자인패턴 - 부분과 전체의 계층을 표현하기 위해 객체들을 모아 트리 구조로 구성합니다. 사용자로 하여금 개별 객체와 복합객체를 모두 동일하게 다룰 수 있도록 하는 패턴. 클래스 설명 플래시에서 UI를 만들 때 무비클립이 무비클립을 포함하는 관계를 많이 봐왔을 것이다. 구조관점에서 봤을 땐 상위객체안에 하위객체가 있다. 즉 자식과 부모의 관계가 된다. 그러나 객체자체의 성질을 보면 부모와 자식과의 관계가 동질적임을 알 수 있다. 바로 이런 자신과 똑같은 성격의 객체를 포함하는 관계를 복합체패턴이라고 한다. 플래시에서 대표적인 클래스가 DisplayObjectContainer 클래스가 있다. 클래스 사용방법 var sampleParent: Sprite = new Sprite(); //개별객체 var.. 더보기 디자인패턴 : Iterator 반복자 디자인패턴 - 내부 표현부를 노출하지 않고 어떤 객체 집합에 속한 원소들을 순차적으로 접근할 수 있는 방법을 제공하는 패턴. 클래스 설명 리스트 등 집합 객체들은 이 내부 표현 구조를 노출하지 않고도 자신의 원소를 접근할 수 있는 방법을 제공한다. 반복자 객체를 나타내는 Iteratror 클래스는 현재 원소가 무엇인지 관리하고, 이미 방문한 원소들이 무엇인지 알고 있다. ListIterator 클래스의 인스턴스를 생성하기 전에 먼저 순회 주체가 되는 List 객체를 생성해야 한다. ListIterator 클래스의 인스턴스를 생성하고 나면 이를 이용해서 리스트 원소에 접근할 수 있게 된다. CurrentItem() 연산은 리스트의 현재 원소를 알아내는 연산이고, First() 연산은 현재 원소를 리.. 더보기 디자인패턴 : State 상태 디자인패턴 - 객체의 내부 상태에 따라 스스로 행동을 변경할 수 있게 허가하는 패턴. 클래스 설명 어떤 연산에 그 객체의 상태에 따라 달라지는 다중 분기 조건 처리가 너무 많이 들어 있을 때, 객체의 상태를 표현하기 위해 상태를 하나 이상의 나열형 상수로 정의해야 한다. 동일한 조건 문장들을 하나 이상의 연산에 중복 정의해야 하는 때가 있다. 이때 객체의 상태를 별도의 객체로 정의하면, 다른 객체들과 상관없이 그 객체의 상태를 다양화시킬 수 있다. 상태는 다르나 동일한 요청을 받을 때 사용하는 패턴이라고 기억하면 되겠다. 클래스 사용방법 var marine: Marine = new Marine(); marine.stimpack(); //스팀팩사용 10후 기본상태로 전환. 클래스 구성 //State .. 더보기 디자인패턴 : Template Method 템플릿 메서드 디자인패턴 - 객체의 연산에는 알고리즘의 뼈대만을 정의하고 각 단계에서 수행할 구체적 처리는 서브클래스 쪽으로 미룬다. 알고리즘의 구조 자체는 그대로 놔둔 채 알고리즘 각 단계 처리를 서브클래스에서 재정의할 수 있게 한다. 클래스 설명 템플릿 메서드 패턴은 팩토리 메서드 패턴과 구조가 거의 같다고 할 수 있다. 보는 관점에 따라 두개의 패턴을 구분할 수 있는데, 생성관점에서 바라보는 패턴은 팩토리 메서드 패턴이라 표현하고, 행동관점에서 바라보는 패턴을 템플릿 메서드 패턴이라 생각하면 되겠다. 클래스 사용방법 var app: ConcreteClass = new ConcreteClass(); app.templateMethod(); 클래스 구성 //AbstrackClass : 서브클래스들이 재정.. 더보기 디자인패턴 : Facade 파사드 디자인패턴 - 서브시스템에 있는 인터페이스 집합에 대해서 하나의 통합된 인터페이스를 제공하는 패턴으로, 서브시스템을 좀더 사용히기 편하게 만드는 상위 수준의 인터페이스를 정의한다. 클래스 설명 아래 사용방법에서 서브클래스 개수를 보면 알겠지만 파사드패턴을 사용하게 되면 서브시스템에 있는 많은 클래스를 알아야 할 필요가 없다. 이로써 사용자가 다뤄야할 객체의 수가 줄어들며, 서브시스템을 쉽게 사용할 수 있다. 또한 서브시스템과 사용자 코드 간의 결합도를 더욱 약하게 만든다. 결합이 약하면, 서브시스템 내의 요소를 다양화하는 작업을 원활하게 할 수 있다. 기존에 존재하는 클래스의 기능성을 추상화한다는 점에서 중재자 패턴과 비슷하다. 중재자 패턴의 목적은 여러 객체들 사이의 협력 관계를 추상화하여 기능.. 더보기 디자인패턴 : Factory Method 팩토리 메서드 디자인패턴 - 객체를 생성하기 위해 인터페이스를 정의하지만, 어떤 클래스의 인스턴스를 생성할 지에 대한 결정은 서브클래스가 내리도록 한다. 가상 생성자라고도 불린다. 클래스 설명 어떤 클래스가 자신이 생성해야 하는 객체의 클래스를 예측할 수 없을 때, 생성할 객체를 기술하는 책임을 자신의 서브클래스가 지정했으면 할 때, 객체 생성의 책임을 몇 개의 보조 서브클래스 가운데 하나에게 위임하고, 어떤 서브클래스가 위임자인지에 대한 정보를 국소화 시키고 싶을 때, 팩토리 메서드를 사용한다. 클래스 사용방법 var factory1: ConcreteFactory = new ConcreteFactory(); var product1: Product = factory1.buyProduct("camera").. 더보기 이전 1 2 3 4 5 6 7 8 9 다음