객체 지향 프로그래밍 설계를 할 때 자주 발생하는 문제들을 피하기 위해 사용되는 패턴. 디자인 패턴이란 차후 유지보수성 및 수정에 관련된 사이드 이펙트 등을 최소화하기 위해 기존에 이런 문제를 회피하기 위해 어떤 방식으로 설계했는지 참고하여 진행하는 참고서라 볼 수
생성(Creational) 패턴객체 생성에 관련된 패턴객체의 생성과 조합을 캡슐화해 특정 객체가 생성되거나 변경되어도 프로그램 구조에 영향을 크게 받지 않도록 유연성을 제공한다.전역 변수를 사용하지 않고 객체를 하나만 생성 하도록 하며, 생성된 객체를 어디에서든지 참조
생성(Creational) 패턴별도의 Builder 클래스를 만들어 값을 입력받은 후 하나의 인스턴스를 리턴하는 방식매개 변수를 각각 받아들이고 모든 매개 변수를 받은 뒤에 이 변수들을 통합해서 한번에 사용하는 패턴외부 혹은 내부로 Builder Class를 구현하여,
생성(Creational) 패턴어떤 작업을 처리하는 일부분을 서브 클래스로 캡슐화해 전체 일을 수행하는 구조는 바꾸지 않으면서 특정 단계에서 수행하는 내역을 바꾸는 패턴동일한 기능을 상위 클래스에서 정의하면서 확장/변화가 필요한 부분만 서브 클래스에서 구현할 수 있도록
생성(Creational) 패턴객체 생성 처리를 서브 클래스로 분리 해 처리하도록 캡슐화하는 패턴객체를 생성하기 위해 인터페이스를 정의하지만, 어떤 클래스의 인스턴스를 생성할지에 대한 결정은 서브클래스가 내리도록 한다Product팩토리 메서드로 생성될 객체의 공통 인터
생성(Creational) 패턴 구체적인 클래스에 의존하지 않고 서로 연관되거나 의존적인 객체들의 조합을 만드는 인터페이스를 제공하는 패턴상세화된 서브클래스를 정의하지 않고도 서로 관련성이 있거나 독립적인 여러 객체의 군을 생성하기 위한 인터페이스를 제공한다Abstra
구조(Structural) 패턴 서로 다른 인터페이스를 가진 두 클래스를 어댑터 클래스로 인터페이스를 통일 시켜 사용하는 패턴어댑터를 이용하면 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 쓸 수 있다.WebClient요청이 들어오면 doWork(
구조(Structural) 패턴 객체의 결합 을 통해 기능을 동적으로 유연하게 확장 할 수 있게 해주는 패턴기본 기능에 추가할 수 있는 기능의 종류가 많은 경우에 각 추가 기능을 Decorator 클래스로 정의 한 후 필요한 Decorator 객체를 조합함으로써 추가
구조(Structural) 패턴 여러 개의 객체들로 구성된 복합 객체와 단일 객체를 클라이언트에서 구별 없이 다루게 해주는 패턴클라이언트는 전체와 부분을 구분하지 않고 동일한 인터페이스 를 사용할 수 있다.Component구체적인 부분즉 Leaf 클래스와 전체에 해당하
구조(Structural) 패턴 구현부에서 추상층을 분리하여 각자 독립적으로 변형 및 확장이 가능하도록 만드는 패턴기능과 구현에 대해 두 개의 별도 클래스로 구현한다Abstraction : 기능 계층의 최상위 클래스로 추상 인터페이스RefindAbstraction :
구조(Structural) 패턴서브시스템을 더 쉽게 사용할 수 있도록 higher-level 인터페이스를 정의하고, 제공하는 패턴단순화된 인터페이스를 통해서 서브시스템을 더 쉽게 사용할 수 있도록 하기위한 용도로 쓰인다.DataBase Connection을 통해 HTM
구조(Structural) 패턴어떤 다른 객체로 접근하는 것을 통제하기 위해서 그 객체의 대리자(surrogate)나 자리표시자(placeholder)의 역할을 하는 객체를 제공하는 패턴중요한 것은 흐름제어만 할 뿐 결과값을 조작하거나 변경시키지 않는다Proxy Obj
구조(Structural) 패턴어떤 클래스의 인스턴스 한 개만 가지고 여러 개의 "가상 인스턴스"를 제공하고 싶을 때 사용하는 패턴인스턴스를 가능한 대로 공유시켜 new연산자를 통한 메모리 낭비를 줄이는 방식Flyweight : 공유에 사용할 클래스들의 인터페이스(AP
행위(Behavioral) 패턴요청을 처리하는 동일 인터페이스 객체들을체인 형태로 연결해놓는 패턴클라이언트로부터의 요청을 처리할 수 있는 처리객체를 집합(Chain)으로 만들어 부여함으로 결합을 느슨하기 위해 만들어진 디자인 패턴적용 경우요청의 발신자와 수신자를 분리하
행위(Behavioral) 패턴객체의 상태 정보를 가지는 클래스를 따로 생성하여, 객체의 상태를 저장하거나 이전 상태로 복원할 수 있게 해주는 패턴원하는 시점의 상태 복원이 가능하다Originator.classOriginator : 현재 State를 가지고, Memen
행위(Behavioral) 패턴어떤 작업을 처리하는 일부분을 서브 클래스로 캡슐화해 전체 일을 수행하는 구조는 바꾸지 않으면서 특정 단계에서 수행하는 내역을 바꾸는 패턴동일한 기능을 상위 클래스에서 정의하면서 확장/변화가 필요한 부분만 서브 클래스에서 구현할 수 있도록
행위(Behavioral) 패턴간단한 언어의 문법을 정의하고 해석하는 패턴언어가 주어지면 해당 표현을 사용하여 언어로 문장을 해석하는 인터프리터를 사용하여 문법 표현을 정의하는 방법Expression.class규칙(rule)을 생성하고 표현을 파싱하는 것을 보이기 위한
행위(Behavioral) 패턴실행될 기능을 캡슐화함으로써 주어진 여러 기능을 실행할 수 있는 재사용성이 높은 클래스를 설계하는 패턴이벤트가 발생했을 때 실행될 기능이 다양하면서도 변경이 필요한 경우에 이벤트를 발생시키는 클래스를 변경하지 않고 재사용하고자 할 때 유용
행위(Behavioral) 패턴컬렉션 구현 방법을 노출시키지 않으면서도 그 집합체안에 들어있는 모든 항목에 접근할 수 있게 해 주는 방법을 제공해 주는 패턴이터레이터 패턴을 사용하면 집합체 내에서 어떤 식으로 일이 처리되는지 몰라도 그 안에 들어있는 항목들에 대해서 반
중재자 패턴(Mediator Pattern) 행위(Behavioral) 패턴 모든 클래스간의 복잡한 로직(상호작용)을 캡슐화하여 하나의 클래스에 위임하여 처리하는 패턴 M:N의 관계에서 M:1의 관계로 복잡도를 떨어뜨려 유지 보수 및 재사용의 확장성에 유리한 패턴
행위(Behavioral) 패턴한 객체의 상태 변화에 따라 다른 객체의 상태도 연동되도록 일대다 객체 의존 관계를 구성 하는 패턴데이터의 변경이 발생했을 경우 상대 클래스나 객체에 의존하지 않으면서 데이터 변경을 통보하고자 할 때 유용하다Observer데이터의 변경을
행위(Behavioral) 패턴일련의 규칙에 따라 객체의 상태(State)를 변화시켜, 객체가 할 수 있는 행위를 바꾸는 패턴객체의 특정 상태를 클래스로 선언하고, 클래스에서는 해당 상태에서 할 수 있는 행위들을 메서드로 정의한다State시스템의 모든 상태에 공통의 인
행위(Behavioral) 패턴행위를 클래스로 캡슐화해 동적으로 행위를 자유롭게 바꿀 수 있게 해주는 패턴같은 문제를 해결하는 여러 알고리즘이 클래스별로 캡슐화되어 있고 이들이 필요할 때 교체할 수 있도록 함으로써 동일한 문제를 다른 알고리즘으로 해결할 수 있게 하는
행위(Behavioral) 패턴방문자와 방문 공간을 분리하여, 방문 공간이 방문자를 맞이할 때, 이후에 대한 행동을 방문자에게 위임하는 패턴즉, 로직과 구조를 분리하는 패턴이라고 볼 수 있다. 로직과 구조가 분리되면 구조를 수정하지 않고도 새로운 동작을 기존 객체 구조