DEV ℧ Developer Diary

[DesignPattern] 책임 연쇄 패턴 (Chain Of Responsibility)

책임 연쇄 패턴 (Chain Of Responsibility)

메시지를 보내는 객체와 이를 받아 처리하는 객체들 간의 결합도를 없애기 위한 패턴입니다. 하나의 요청에 대한 처리가 반드시 한 객체에서만 되지 않고, 여러 객체에게 그 처리 기회를 주려는 것입니다.

동기

이 패턴은 메시지 송신 측과 수신측을 분리한는 것이다....

[DesignPattern] 프록시 (Proxy)

프록시 (Proxy)

다른 객체에 대한 접근을 제어하기 위한 대리자 또는 자리채움자 역할을 하는 객체를 둡니다.

동기

어떤 객체에 대한 접근을 제어하는 한 가지 이유는 실제로 그 객체를 사용할 수 있을 때까지 객체 생성과 초기화에 들어가는 비용 및 시간을 물지 않겠다는 것이다.

이미지와 같은...

[DesignPattern] 플라이웨이트 (Flyweight)

플라이웨이트 (Flyweight)

공유(sharing)를 통해 많은 수의 소립(fine-grained) 객체들을 효과적으로 지원합니다.

동기

플라이웨이트 객체는 공유 가능한 객체로, 여러 비슷한 상황에서 사용될 수 있습니다. 그러나 각각의 상황에서는 독립적인 객체로 동작합니다. 이것은 공유될 수 없는 객체의 인스턴스와 구분이 안 된다는 의미입니다. 그러므로 플라이웨이트 객체가 적용될 상황을...

[DesignPattern] 퍼사드 (Facade)

퍼사드 (Facade)

한 서브시스템 내의 인터페이스 집합에 대한 획일화된 하나의 인터페이스를 제공하는 패턴으로, 서브세스템을 사용하기 쉽도록 상위수준의 인터페이스를 정의합니다.

동기

시스템을 서브시스템으로구조화하면 복잡성을 줄이는데에 큰 도움이 된다. 공통적인 설계 목표는 서브시스템들 사이의 의사소통 및 종속성을 최소화하려는 것이다.

이런 목표를 달성하도록 도와주는 패턴이 퍼사드...

[DesignPattern] 데코레이터 (Decorator)

데코레이터 (Decorator)

객체에 동적으로 새로운 책임을 추가할 수 있게 합니다. 기능을 추가하려면, 서브클래스를 생성하는 것보다 융통성 있는 방법을 제공합니다.

다른 이름

랩퍼(Wrapper)

동기

가끔 전체 클래스에 새로운 기능을 추가할 필요는 없지만, 개별적인 객체에 새로운 책임을 추가할 필요가 있다. 새로운 서비스의 추가가 필요할...