전략패턴(Strategy Pattern) 전략패턴은 각각의 알고리즘군을 교환이 가능하도록 별도로 정의하고 각각 캡슐화한 후 서로 교환해서 사용할 수 있는 패턴이며, 아래와 같은 장점이 있다.
옵저버패턴은 어떤 객체에 이벤트가 발생했을 때, 이 객체와 관련된 객체들(옵저버)에게 통지하도록 하는 디자인 패턴을 말한다. 즉, 객체의 상태가 변경되었을 때 특정 객체에 의존하지 않으면서 상태의 변경을 관련된 객체들에게 통지하는 것이 가능해진다.유튜브를 예시로, 유튜
어댑터패턴은 클래스의 인터페이스를 사용자가 기대하는 다른 인터페이스로 변환하는 패턴으로, 호환성이 없는 인터페이스 때문에 함께 동작할 수 없는 클래스들이 함께 작동할 수 있도록 도와준다.어댑터패턴의 어댑터는 일반적으로 노트북 어댑터의 개념을 떠올리면 된다. 콘센트 전원
프로토타입은 실제 제품을 만들기에 앞서 테스트를 위한 샘플 제품을 만드는데 이때, 샘플 제품을 프로토타입이라고 칭한다.프로토타입패턴은 객체를 생성하는데 비용이 많이 들고, 비슷한 객체가 이미 있는 경우에 사용되는 생성 패턴 중 하나이다.즉, 프로토타입 패턴은 원본 객체
특정 상황에서 조건에 따라 객체를 다르게 생성해야 할 때가 있다.예를 들면 사용자의 입력값에 따라 하는 일이 달라질 경우, 분기를 통해 특정 객체를 생성해야한다.객체마다 하는 일이 다르기 때문에 조건문에 따라 객체를 다르게 생성하는 것은 이상한 일이 아니다.팩토리메소드
데커레이터는 기존의 기능에 새로운 기능을 추가하고 싶을 경우, 새로운 기능을 Decorator로 만들어서 추가하는 방식이다.예시로, 햄버거를 생각해보자. 우리는 햄버거를 만들 때 제조자의 기호에 따라 야채와 고기를 선택할 수 있다. 즉, 기본 빵 위에 채소와 고기 토핑
템플릿 메서드 패턴은 여러 클래스에서 공통으로 사용하는 메서드를 상위 클래스에서 정의하고, 하위 클래스마다 다르게 구현해야하는 세부적인 사항을 하위 클래스에서 구현하는 패턴을 말한다.템플릿메서드 방식을 사용하면, 코드의 중복을 제거할 수 있다.(리팩토링)다른 관점에서
컴퍼지트패턴은 구조 패턴 중 하나로, 객체들의 관계를 트리 구조로 구성하여 부분-전체 계층을 표현하는 패턴이다. 사용자는 컴퍼지트패턴을 통해 단일 객체와 복합 객체 모두 동일하게 다룰 수 있다.전체-부분의 관계를 갖는 객체들 사이의 관계를 정의할 때 유용하다.클라이언트
프록시(Proxy)를 번역하면 대리자, 대변인의 의미를 갖고 있다. 대리자, 대변인은 누군가를 대신해서 그 역할을 수행하는 존재이다. 이는 프로그램에도 똑같이 적용된다. 즉, 프록시에게 어떤 일을 대신 시키는 것이다.어떤 객체를 사용하고자 할때, 객체를 직접적으로 참조
싱글톤패턴은 인스턴스가 프로그램 내에서 오직 하나만 생성되는 것을 보장하고, 프로그램 어디에서든 인스턴스에 접글할 수 있도록 하는 패턴이다.즉, 똑같은 인스턴스를 여러개 만드는 것이 아닌, 기존에 생성했던 동일한 인스턴스를 사용하는것을 의미한다.위의 개념을 토대로 싱글
스테이트 패턴은 객체가 특정 상태에 따라 행위를 달리하는 상황에서 자신이 직접 상태를 체크하여 상태에 따라 행위를 호출하지 않고, 상태를 객체화하여 상태가 행동을 할 수 있도록 위임하는 패턴을 말한다.즉, 객체의 특정 상태를 클래스로 선언하고, 클래스에서는 해당 상태에
퍼사드패턴(Facade Pattern)의 목적은 복잡한 서브시스템을 인터페이스로 감싸 간단하게 만드는 것이다.퍼사드패턴은 제 3의 API(Third Party API)와 같은 외부 라이브러리를 추상화하는데 사용된다.위 다이어그램에서 처럼 다양한 서브시스템이 사용되는 시
커맨드패턴은 객체의 행위(메서드)를 클래스로 만들어 캡슐화하는 패턴이다.어떤 객체(A)에서 다른 객체(B)의 메서드를 실행하려면 객체(B)를 참조하고 있어야 하는 의존성이 발생한다. 이와 같은 상황에서 커맨드패턴을 적용하면 의존성을 제거할 수 있다. 또한 기능이 수정되
컬렉션 구현 방법을 노출시키지 않으면서, 그 집합체 안에 들어있는 모든 항목에 접근할 수 있는 방법을 제공하는 패턴컬렉션 객체 안에 들어있는 모든 항목에 접근하는 방식이 통일되어 있으면 어떤 종류의 집합체에 대해서도 사용할 수 있는 다형적인 코드를 만들 수 있다.이터레
Visitor는 사전적인 의미로 어떤 장소에 찾아오는 사람이라는 의미를 갖고 있다. 방문자 패턴에서는 데이터 구조와 처리를 분리한다. 데이터 구조 안을 돌아다니는 주체인 방문자를 나타내는 클래스를 준비해서 처리를 맡긴다. 새로운 처리를 추가하고 싶을 땐 새로운 방문자를
빌더 패턴은 복잡한 객체를생성하는 방법을 정의하는 클래스와 표현하는 방법을 정의하는 클래스를 별도로 분리하여, 서로 다른 표현이라도 이를 생헝할 수 있는 동일한 절차를 제공하는 패턴이다.빌더 패턴의 장점1\. 필요한 데이터만 설정할 수 있다.2\. 유연성을 확보할 수