반응형

Pattern 4

책임 연쇄 패턴(Chain of Responsibility Pattern)

​ ​ 책임 연쇄 패턴은 특정 작업을 여러 객체들이 연쇄적으로 처리하는 패턴이다. 요청을 초리할 수 있는 객체를 찾을 때 까지 집합 안에서 요청을 전달한다. ​ 요청의 발신자와 수신자를 분리하거나 요청을 처리할 수 있는 객체가 여러개일 때 그 중 하나에 요청을 보내려는 경우 책임 연쇄 패턴을 적용하면 된다. ​ 이 패턴을 사용함으로써 결합도를 낮출 수 있고 발신자와 수신자를 분리시킬 수 있다. 그치만 이 패턴은 디버깅 및 테스트가 쉽지 않다는 점이 있다. ​ 구조 ▷ Handler: 요청을 수신하고 처리 객체들의 집합에 전달하는 인터페이스이다. ▷ ConcreteHandler : 요청을 처리하는 실제 처리 객체 ​ ​ ​ 구현 public interface IHandler { void setNext(IH..

프록시 패턴(Proxy Pattern)

사용하는 객체를 통해 실제 객체를 제어하는 패턴이다. 사용하는 목적에 따라 원격지 프록시, 가상 프록시 등으로 구분할 수 있다. ​ ●원격지 프록시 사용할 실제 객체가 클라이언트와 다른 위치에 있을 때 원격지에 있는 객체처럼 사용하는 프록시이다. 대표적인 예로 서버와 클라이언트 간의 함수 사용이다. 클라이언트에서 데이터를 전송하면, 연결되어 있는 서버에서 수신을 담당하는 함수로 데이터를 수신한다. 클라이언트에서 송신하는 데이터와 일치하는 함수를 서버에서 호출하게 되는 것이 대표적인 원격지 프록시이다. (예_RDP, RemoteDeskTopProtocol ) ​ ●가상 프록시 사용할 실제 객체의 특정 행위가 많은 시간이 들 때 비동기적으로 수행할 수 있게 하여 사용자가 작업이 완료되는 것을 기다리지 않게 ..

경량 패턴(Flyweight Pattern)

공유 풀(메모리 풀) 미리 형성하여 참조하는 개체를 처음에 사용할 때 저장한 뒤, 그 이후에 사용할 때에는 저장해 둔 데이터를 사용하여 메모리 절약하는 패턴이다. 이 패턴은 많은 수의 객체를 생성할 때 주로 쓰인다. 대표적인 예로는, 게임에서 숲이나 유닛, 지형 등 환경 오브젝트와 같이 서로 비슷한 요소를 가지면서 많은 객체를 필요로 할 때 사용된다. ​ 메모리 풀은 일정 갯수의 데이터 공간을 정해두고, 그 공간만큼 사용할 데이터를 저장하여 사용한다. 메모리 풀이 가득차게 되면 지정해 둔 알고리즘을 통해 데이터를 삭제하고 추가하거나 참조만으로 사용한다. ​ ​ ​ 구조 ▷FlyweightFactory: 공유 객체 풀을 관리하는 팩토리 클래스 ▷Flyweight: 공유 객체에 대한 구현 클래스 ​ ​ 시나..

옵저버 패턴(Observer Pattern)

​ 객체의 상태변화를 관찰하는 옵저버를 객체에 등록하고 상태 변화가 있을 때 마다 메소드 등을 통해 옵저버에게 상태변화 했음을 알리는 디자인 패턴이다. 상대 클래스나 객체에 의존하지 않으면서 데이터 변경을 통보할 때 유용하다. ​ 옵저버 또는 리스너라 불리는 하나 이상의 객첵를 관찰 대상이 되는 객체에 등록시킨다. 그리고 각각의 옵저버들은 관찰 대상인 객체가 발생시키는 이벤트를 받아 처리한다. ​ ​ ​ 구조 ​ ▷ Observer: 데이터의 변경을 통보 받는 인터페이스. Subject에서는 Observer의 update를 호출하여 ConcreteSubject의 데이터 변경을 ConcreteObserver에 통보한다. ▷ Subject: ConcreteObserver 객체를 관리. Observer인터페이..

반응형