목록Programing & Coding (86)
S E P H ' S
템플릿 메소드(Template Method) 패턴 템플릿 메소드 패턴이란? GoF의 디자인 패턴에 의하면, 템플릿 메소드 패턴을 아래와 같이 정의한다. 알고리즘의 구조를 메소드에 정의하고, 하위 클래스에서 알고리즘 구조의 변경없이 알고리즘을 재정의 하는 패턴이다. 알고리즘이 단계별로 나누어지거나, 같은 역할을 하는 메소드이지만 여러곳에서 다른 형태로 사용이 필요한 경우 유용한 패턴이다. 토비의 스프링에서는 아래와 같이 정의하고 있다. 상속을 통해 슈퍼클래스의 기능을 확장할 때 사용하는 가장 대표적인 방법. 변하지 않는 기능은 슈퍼클래스에 만들어두고 자주 변경되며 확장할 기능은 서브클래스에서 만들도록 한다. 언제 사용할까? 두 개 이상의 프로그램이 기본적으로 동일한 골격 하에서 동작할 때 기본 골격에 해당..
상태(State) 패턴 상태 패턴이란? 객체지향 프로그래밍에 대해서 공부했거나 조금 알고 있는 분들이라면 객체가 '상태'에 따라서 행위를 다르게 한다는 것에 대해서는 어느정도 알고 있을 것이다. 키가 145cm인 사람. 키 제한이 150cm인 놀이기구. 놀이기구 캐스트가 있다고 생각해보자. 놀이기구 캐스트는 손님이 놀이기구를 탈 수 있는지 없는지를 안내하는 행동을 한다. 키가 145인 이 손님은 놀이기구를 탈 수 없다. 1년 후, 이 사람이 키가 커서 155cm가 되었다. 이제는 이 사람은 놀이기구를 탈 수 있다. 이처럼 이 캐스트는 손님의 키라는 상태 상태에 따라서 놀이기구를 탈 수 있는지 없는지를 판단하여 안내한다. 언제 사용할까? 객체 내부의 상태에 따라 동작을 달리 해야할 때 사용함. 구조 Con..
책임 연쇄(Chain of Responsibility) 패턴 책임 연쇄 패턴은 하나 이상의 객체가 요청을 처리해야하고 메시지를 받을 수신측과 메시지를 송신할 송신측의 결합도를 낮추는 역할을 한다. 따라서 객체에게 책임을 할당하는데 유연성을 높일 수 있는 장점이 있지만 객체 연결이 잘 성립되지 않았다면 해당 요청이 무시될 수 있다. 책임 연쇄 패턴이란? 책임 연쇄 패턴은 메시지를 보내는 객체와 이를 받아 처리하는 객체들 간의 결합도를 낮추기 위한 패턴중에 하나다. 수신측에는 메시지를 처리할 객체들을 연결시켜 놓고 송신측에서 메시지를 수신측에게 전달하면 요청에 적합한 객체를 찾을때까지 연결된 객체들에게 메시지를 전달한다. 언제 사용할까? 요청 객체와 처리 객체를 분리하거나 요청을 처리할 수 있는 객체가 여러..
컴포지트(Composite) 패턴 OOP에서 컴포지트는 하나 이상의 유사한 객체를 구성으로 설계된 객체로 모두 유사한 기능을 나타낸다. 이를 통해 객체 그룹을 조작하는 것처럼, 단일 객체를 조작할 수 있다. 컴포지트 패턴이란? 컴포지트 패턴은 클라이언트가 복합 객체(group of object)나 단일 객체를 동일하게 취급하는 것을 목적으로 한다. 여기서 컴포지트의 의도는 트리 구조로 작성하여, 전체-부분(whole-part)관계를 표현하는 것이다. 트리구조를 다룰때, 프로그래머는 리프노드와 브랜치를 구별해야 한다. 여기서 코드는 많은 복잡성을 만들어 많은 에러를 초래한다. 이를 해결하기 위해, 복잡하고 원시적인 객체를 동일하게 취급하기 위한 인터페이스를 작성할 수 있다. 이러한 컴포지트 패턴은 인터페이..