Design pattern 25

[디자인 패턴] 24장 인터프리터 패턴

공부하기 위해서 요약정리해놓은 것입니다.. 정확하고 꼼꼼한 자료는 쉽게 배워 바로 써먹는 디자인 패턴을 확인하시고 코드는 github.com/infohojin/patterns 을 참고해 주세요. 인터프리터 패턴은 간단한 언어적 문법을 표현하는 패턴입니다. 언어 이 세상에는 수많은 언어가 존재합니다. 컴퓨터는 0 과 1로 동작하는 시스템이지만, 실제 컴퓨터를 사용할 때는 추상화된 고급 언어로 코드를 작성합니다. 컴퓨터는 0과 1로 동작하는데 이를 기계어라고 합니다. 사람이 기계오로 프로그램을 작성하는 것은 어려우므로, 보다 쉽게 작성하기 위해 어셈블리와 같은 언어가 만들어졌습니다. 어셈블리어는 한 줄의 기계어에 한 줄의 명령어가 대응하는 구조입니다. 이를 저수준 언어라고 하거나, 기계어와 고급 언어 사이에..

[디자인 패턴] 23장 전략 패턴

공부하기 위해서 요약정리해놓은 것입니다.. 정확하고 꼼꼼한 자료는 쉽게 배워 바로 써먹는 디자인 패턴을 확인하시고 코드는 github.com/infohojin/patterns 을 참고해 주세요. 전략 패턴은 객체 내부에서 해결해야 하는 목적을 알고리즘 객체로 분리 적용하는 기법입니다. 실제 내부 동작을 외부 알고리즘 객체로 분리하여 유연하게 동작을 변경시킬 수 있습니다. 문제 프로그램은 반복되는 문제를 해결합니다. 발생한 문제를 해결하는 방법은 다양한데, 이들 각각의 해결 방법을 알고리즘이라고 합니다. 전략은 어떤 목표를 정하고 진행하는 큰 틀을 말하며, 군대에서 적과 싸울 때의 작전에 비유할 수 있습니다. 전술은 전략과 유사한 용어로, 전략을 짜면서 정한 목표를 달성하기 위한 상세 내용을 의미합니다. ..

[디자인 패턴] 22장 템플릿 메서드 패턴

공부하기 위해서 요약정리해놓은 것입니다.. 정확하고 꼼꼼한 자료는 쉽게 배워 바로 써먹는 디자인 패턴을 확인하시고 코드는 github.com/infohojin/patterns 을 참고해 주세요. 템플릿 메서드 패턴은 메서드를 이용해 각 단계를 템플릿 구조화하고 행동을 구분합니다. 프로그램의 구조 프로그램의 코드는 구조를 갖고 있습니다. 시작을 기준으로 하여 순차적으로 코드를 읽고 해석합니다. 프로그램이 순차적으로 실행된다는 의미는 단계적으로 코드를 따라간다는 것입니다. 모든 행동에는 순서가 있으며, 프로그램은 이러한 동작을 분석해서 순차적으로 연결합니다. 인간은 어떤 행동을 추상화하고 이를 이해합니다. 또한 추상화된 각 단계의 동작을 무의식적으로 학습된 형태로 반복합니다. 프로그래밍은 복잡한 동작을 단계..

[디자인 패턴]21장 메멘토 패턴

공부하기 위해서 요약정리해놓은 것입니다.. 정확하고 꼼꼼한 자료는 쉽게 배워 바로 써먹는 디자인 패턴을 확인하시고 코드는 github.com/infohojin/patterns 을 참고해 주세요. 메멘토 패턴은 객체의 상태를 저장하여 이전 상태로 복구하는 패턴입니다. 상태 저장 객체는 고유한 상태를 갖고 있으며 객체의 상태는 프로그램 실행 중에 다른 객체에 의해 끊임없이 값이 변경됩니다. 객체는 프로퍼티와 메서드로 구성되고 프로퍼티는 객체의 상태 형태로 값을 가집니다. 그리고 메서드는 객체의 행위로 내부 상태를 변경하고, 상태값에 따라 동작을 수행합니다.

[디자인 패턴]20장 상태패턴

공부하기 위해서 요약정리해놓은 것입니다.. 정확하고 꼼꼼한 자료는 쉽게 배워 바로 써먹는 디자인 패턴을 확인하시고 코드는 github.com/infohojin/patterns 을 참고해 주세요. 상태 패턴은 조건에 따른 별개의 동작을 제어문으로 사용하지 않습니다. 그 대신 객체를 캡슐화하여 독립된 동작으로 구분하는 패턴입니다. 상태 패턴은 상태 표현 객체라고 부르기도 합니다. 상태란 프로그램은 조건에 따라 분기해 다양한 동작을 처리합니다. 제어문은 조건의 상태 값을 참과 거짓으로 판단하여 상태를 처리합니다. 제어문의 조건은 값을 이용해 참과 거짓으로 상태를 구분하고 동작을 제어하는 것입니다. 참 & 거짓 동작으로 나뉘며, 이처럼 2가지 형태로 값의 상태를 구별하는 것을 플래그라고도 합니다. 주문 상태를 ..

[디자인 패턴]19장 중재자 패턴

공부하기 위해서 요약정리해놓은 것입니다.. 정확하고 꼼꼼한 자료는 쉽게 배워 바로 써먹는 디자인 패턴을 확인하시고 코드는 github.com/infohojin/patterns 을 참고해 주세요. 중재자 패턴은 분산된 다수의 객체 역활을 조정할 때 주로 사용됩니다. 중재 중재는 어떤 문제를 해결하거나 조정을 돕는 것을 말합니다. 객체지향에서는 분산된 객체의 행동을 중재합니다. 객체지향의 특징은 모든 행동을 하나의 객체에 집중하여 처리하지 않는다는 것입니다. 행동은 작은 단위로 분리하고, 목적 동작을 수행하기 위해 분리된 행동을 연결합니다. 객체지향은 하나의 커다란 행동을 작은 단위의 객체로 분산합니다. 이렇게 객체의 역활을 보다 작은 객체로 분할하는 이유는 동작을 재사용하기 위해서입니다. 객체의 행동을 작..

[디자인패턴]18장 감시자 패턴

공부하기 위해서 요약정리해놓은 것입니다.. 정확하고 꼼꼼한 자료는 쉽게 배워 바로 써먹는 디자인 패턴을 확인하시고 코드는 github.com/infohojin/patterns 을 참고해 주세요. 감시자 패턴은 모던 언어에서 많이 응용되는 대표적인 패턴입니다. 몇몇 프로그래밍 언어는 자체적으로 감시자 패턴의 기본 구현체를 만들어 제공하기도 합니다. 감시자 프로그램 동작은 하나의 로직을 실행한 후 다음 로직을 실행하는 것처럼 순차적으로 이뤄집니다. 코드의 로직은 독립적이고 자체적인 동작입니다. 또는 외부의 값에 따라 실행되는 동작을 다르게 할 수도 있습니다. 코드는 값을 확인하는 동작이 필요합니다. 다음은 반복문과 조건문을 이용한 감시코드입니다.

[디자인 패턴] 17장 체인 패턴

공부하기 위해서 요약정리해놓은 것입니다.. 정확하고 꼼꼼한 자료는 쉽게 배워 바로 써먹는 디자인 패턴을 확인하시고 코드는 github.com/infohojin/patterns 을 참고해 주세요. 체인 패턴은 객체 메시지의 송신과 수신을 분리해서 처리합니다. 다음 세가지 내용을 중심으로 살펴봅니다. - 상태값과 처리 방식에 대해 알아봅니다. - 상태값과 복수의 행동 객체를 연결하는 방법에 대해 알아봅니다. - 객체를 연결하는 방법에 대해 알아봅니다. 제어문 프로그램은 순차적 절차에 따라 코드를 실행합니다. 그중 제어문은 상태값을 비교하여 코드의 실행 흐름을 변경합니다. 개발 언어는 코드의 동작을 제어할 수 있는 조건문을 지원합니다. 대표적으로 if문과 switch문이 있습니다.

[디자인 패턴] 16장 방문자 패턴

공부하기 위해서 요약정리해놓은 것입니다.. 정확하고 꼼꼼한 자료는 쉽게 배워 바로 써먹는 디자인 패턴을 확인하시고 코드는 github.com/infohojin/patterns 을 참고해 주세요. 방문자 패턴은 공통된 객체의 데이터 구조와 처리를 분리하는 패턴입니다. 데이터 처리 객체는 데이터와 행위가 있으며 객체의 행위는 데이터를 처리합니다. 객체는 데이터와 함수를 하나의 그룹으로 묶어 처리하는데, 이러한 객체의 특성을 캡슐화라고 하며 다른 말로는 번들링이라고도 합니다. 캡슐화는 C 언어에서 구조체나 공용체로 데이터만 묶어 처리했습니다. 그러나 구조체와 달리 객체는 함수도 포함합니다. 최근의 캡슐화는 데이터와 행위를 위한 메서드 함수를 하나의 객체로 묶어 처리합니다. 캡슐화는 데이터와 행위를 하나의 객체..

[디자인 패턴] 15장 명령 패턴

공부하기 위해서 요약정리해놓은 것입니다.. 정확하고 꼼꼼한 자료는 쉽게 배워 바로 써먹는 디자인 패턴을 확인하시고 코드는 github.com/infohojin/patterns 을 참고해 주세요. 명령 패턴은 행동의 호출을 캡슐화하여 실행하는 패턴입니다. 명령 명령 패턴은 행동을 객체로 캡슐화하여 전달합니다. 객체지향 프로그래밍에서는 데이터와 행위를 하나의 객체로 묶어 캡슐화합니다. 객체는 동작의 행위와 행위를 실행하는 호출 메서드를 함께 만드는데, 구현하는 방법은 작업의 객체화라고 합니다. 기존에는 동작 명령을 한수나 메서드로 구현했습니다. 하지만 명령 패턴에서는 동작 명령을 하나의 클래스 형태로 표현하며 수행하는 동작을 메서드 형태가 아닌 객체 형태로 별도 생성합니다. 명령 패턴은 내부 동작을 위한 모..