design pattern

🗺️ Design Pattern

[Design Pattern] Template Method Pattern - 템플릿 메소드 패턴

Templete Method Pattern템플릿 메소드 패턴(Template Method Pattern)은 상위 클래스에서 기본적인 알고리즘의 구조를 정의하고, 하위 클래스에서 알고리즘의 특정 단계를 구현하는 디자인 패턴입니다.이 패턴을 통해 알고리즘의 구조는 변경하지 않고, 알고리즘의 특정 단계를 재정의할 수 있습니다. 템플릿이란, 사전적 의미로는 형판이라고 합니다.문자, 도형으로 구멍이 뚫려 있는 얇은 플라스틱 판을 생각해볼 수 있습니다.실제로 어떤 도형이 그려질지는 필기구에 의해 결정됩니다.펜으로 그리면 펜으로 그린 도형이 되고, 연필로 그리면 연필로 그린 도형이 됩니다. Template Method 패턴은 템플릿 기능을 가진 패턴입니다.상위 클래스 쪽에 템플릿 메서드가 정의되어 있고, 그 메서드 ..

🗺️ Design Pattern

[Design Pattern] State Pattern - 상태 패턴

State Pattern상태 패턴(State Pattern)은 객체가 내부 상태에 따라 행동을 다르게 할 수 있게 해주는 디자인 패턴입니다.객체는 상태를 변경함으로써 행동이 바뀝니다.상태 패턴을 사용하면 조건문을 많이 사용하는 코드를 간결하고 확장 가능하게 만들 수 있습니다.State는 상태 = 사물의 모양이나 형편을 의미합니다.또한 상태를 클래스로 표현하면 클래스를 교체해서 '상태의 변화'를 표현할 수 있습니다.Strategy Pattern과 조금 유사합니다.  우리가 만들고자 하는 Object에 상태가 있다면 사용할 수 있는 Pattern 입니다. 상태를 가지는 가장 대표적인 예가 신호등 입니다.녹색, 빨강색 중 하나의 상태만 가지는 기계이며, 계속해서 상태가 변화됩니다.State Pattern을 사..

🗺️ Design Pattern

[Design Pattern] Mediator Pattern - 매디에이터 패턴

Mediator PatternMediator 패턴은 객체지향 설계에서 객체들 간의 상호작용을 중재하는 중재자(Mediator) 객체를 사용하여 객체들이 직접적으로 서로 참조하지 않고 통신하도록 만드는 패턴입니다.이를 통해 객체들 간의 결합도를 낮추고, 상호작용을 한 곳에 집중시켜서 코드의 유지보수성을 높입니다.또한 객체간의 복잡한 상호작용을 중앙 집중화하여 관리할 필요가 있는 상황에서 주로 사용됩니다.이를 통해서 객체들이 직접 통신하는 대신 Mediator를 통해 간접적으로 통신하도록 하여 결합도를 낮추고 코드의 유지 보수성을 높입니다. Mediator는 중개인, 각 회원들은 colleage 입니다.Diagram of Mediator PatternMediator는 중개인, 각 회원들은 colleage 입..

🗺️ Design Pattern

[Design Pattern] Visitor Pattern - 방문자 패턴

Visitor PatternVisitor Pattern은 데이터 구조와 처리를 분리하는 패턴입니다.데이터 구조 안에 많은 요소가 저장되어 있고, 그 각 요소에 데하여 무엇인가 처리해 나간다고 할때, 이때 그 처리의 코드는 어디에 써야 할지 고민이 됩니다.일반적으로 생각하면 데이터 구조를 표시하고 있는 클래스 안에 기술 해야 합니다.하지만, 만약 그 처리가 여러 종류라면 새로운 처리가 필요할 때마다 데이터 구조의 클래스를 수정해야 합니다.요소들의 클래스를 변경하지 않고 새로운 작업을 추가할 수 있게 해주는 디자인 패턴입니다.객체 구조를 변경하지 않고도 새로운 작업을 쉽게 추가할 수 있도록 합니다.Visitor 패턴은 객체의 구조가 안정적이지만 객체에 수행할 작업은 자주 바뀌는 경우에 사용하면 유용합니다.객..

🗺️ Design Pattern

[Design Pattern] Observer Pattern - 옵저버 패턴

Observer PatternObserver는 관찰하는 사람의 의미입니다.Observer 패턴에서는 관찰 대상(Subject)의 상태가 변화하면 관찰자(Observer)에게 알려줍니다.Obsever 패턴은 상태 변화에 따른 처리를 기술할 때 효과적입니다.어떠한 이벤트가 일어났을 때 이벤트를 바라보던 감시자들이 바로 반응할 수 있는 Pattern 입니다.-> Subscriber, Listener Pattern Observer Pattern이 아닌 경우이벤트가 일어났는지 확인하기 위해 1초, 1분, 1시간마다 확인을 해야합니다.이러한 방법을 polling 이라고 하여 필요 없는 리소스 낭비가 생깁니다.Polling 주기가 1시간일 경우, 1시간 이내에 이벤트 일어나다가 사라진다면 이벤트가 일어났는지 알 수 ..

🗺️ Design Pattern

[Design Pattern] Memento Pattern - 메멘토 패턴

Memento PatternMemento 패턴은 객체의 상태를 저장하고 복원할 수 있게 하는 디자인 패턴입니다.이 패턴은 객체의 내부 상태를 캡슐화하여 외부에 노출시키지 않고도 객체의 상태를 저장하고 복원할 수 있게 해줍니다.일반적으로 어떤 Object의 히스토리를 관리하고 싶을 때 유용한 패턴입니다. → 게임에서 Save하는 것을 떠올리면 됩니다.가령 텍스트 에디터 사용할 때 undo와 같은 기능을 사용하여 삭제 하기 전 상태로 텍스트 복원이 가능하고, 그 기능을 몇 단계로 실행해서 편집작업을 점점 과거로 돌리는 것도 가능함객체지향프로그램에서 undo기능을 실행하려면 인스턴스를 가지고 있는 정보를 저장해 둘 필요가 있습니다.단, 저장만 해서는 안되고, 저장한 정보로부터 인스턴스를 원대래로 되돌릴 수 있..

🗺️ Design Pattern

[Design Pattern] Chain of Responsibility

Chain of Responsibility PatternChain of Responsibility Pattern은 요청을 처리할 수 있는 기회를 여러 객체들에게 부여함으로써 그들 간의 결합도를 없애주는 패턴입니다.복수의 Object를 사슬처럼 연결해주면, 그 오브젝트의 사슬을 차레대로 돌아다니면서 목적한 Object를 결정하는 방법입니다.responsibility 개념을 갖는 모듈들에 체인을 만드는 Pattern 입니다.chain of responsibility pattern이 아닌 결제 예제클라이언트 코드에서 결제 요청을 발행 합니다.결제 요청 안에는 결제방법과 금액이 존재합니다.결제 방법에는 cash, credit card, debit card 등이 있습니다.결제 요청을 처리하는 함수나 클래스가 있어..

🗺️ Design Pattern

[Design Pattern] Command Pattern - 커맨드 패턴

Command Pattern커맨드 패턴은 요청을 독립된 객체로 변환하여 요청에 대한 모든 정보를 포함하게 만드는 행동 패턴입니다.다양한 요청을 메서드로 매개변수화하고, 요청의 실행을 지연하거나 큐에 넣을 수 있으며, 실행 취소 기능을 지원할 수 있습니다.여러 명령들을 추상화해서 class로 정의하고 Object로 만들어서 사용하는 Pattern입니다.또한 행위(Behavior) 패턴에 속합니다.클래스가 일을 실행할떄, 자신의 클래스 or 다른 클래스의 Method를 호출합니다.그러나 Method를 호출한 결과는 Object에 반영되지만, 일의 이력은 어디에도 남지 않습니다.이때, ‘이 일을 실행하시오’ 라는 ‘명령’을 표현하는 클래스가 있으면 편합니다.명령을 나타내는 클래스의 인스턴스로 하나의 ‘물건’처..

🗺️ Design Pattern

[Design Pattern] Strategy Pattern - 전략 패턴

Strategy Pattern스트래티지 패턴(Strategy Pattern)은 행위 패턴(Behavioral Pattern)의 일종으로, 알고리즘 군을 정의하고, 각 알고리즘을 캡슐화하며, 이들을 상호 교환 가능하게 만드는 패턴입니다.즉, 알고리즘을 클라이언트에서 분리하여 독립적으로 변경할 수 있게 합니다.이를 통해 클라이언트 코드의 변경 없이 알고리즘을 쉽게 교체할 수 있습니다.Runtime 중에 알고리즘을 선택하게 합니다.하나의 알고리즘을 직접 Implementing 하는 대신 어떠한 알고리즘을 사용할지 Runtime Instruction을 받습니다.Animal을 받아서 Speaking을 시키는 함수동물은 고양이 혹은 사자고양이가 들어오면 “meow”사자가 들어오면 “roar”함수는 이 상태로 고정이..

🗺️ Design Pattern

[Design Pattern] Composite Pattern - 컴포지트 패턴

Composite Pattern컴포지트 패턴(Composite Pattern)은 객체를 트리 구조로 구성하여 부분-전체 계층을 구현하는 패턴입니다.이를 통해 클라이언트가 단일 객체와 복합 객체를 동일하게 처리할 수 있습니다.컴포지트 패턴은 구조 패턴(Structural Pattern)의 일종으로, 객체를 그룹으로 묶어 하나의 객체처럼 다룰 수 있게 합니다.컴퓨터의 파일 시스템에서는 Directory 라는 것이 있고, Directory안에는 파일이나 다른 하위 Directory가 있기도 합니다.마치 “상자 안의 상자” 같은 구조, 즉 재귀적 구조를 가집니다.Directory 엔트리를 차례대로 조사할 때, 그릇과 내용물을 같은 종류로 취급하면 편리할 수 있습니다.이 그릇을 내용물과 동일시 하여 재귀적인 구조..

Bigbread1129
'design pattern' 태그의 글 목록