객체 지향적 디자인 패턴을 이용하여 설명한 실제적인 예

0 Comments

행동 패턴

이러한 유형의 패턴에 관심을 간의 통신은 개체입니다. 대부분의 경우 통신하는 객체 간의 종속성은 이러한 패턴을 통해 감소되어 더 나은 소프트웨어 설계로 이어집니다.

책임 체인

이 패턴은 요청에 대한 수신기 객체 체인을 만듭니다. 그것은 수신기에 요청의 발신자를 연결 방지하고 여러 객체에게 요청을 처리 할 수있는 기회를 제공합니다. 수신 객체는 서로 연결됩니다., 아래 예에서 미들웨어 유닛 체인이 구성됩니다. 이메일과 비밀번호가 포함 된 요청이 체인에 전달됩니다. 체인의 새로운 요소를 쉽게 추가할 수 있습니다.

명령

명령에서 패턴을 개체를 캡슐화하는 데 사용되는 모든 정보를 수행하는 데 필요한 작업 또는 이벤트를 트리거합니다. 아래 그림과 같이 ActionOpen 은 액션이 실행되는 객체뿐만 아니라 액션을 정의합니다., 더 많은 정보가 필요하지 않으며 다른 객체 인 여기 메뉴가 작업을 실행할 수 있습니다.

통역

인터프리터의 패턴을 정의하는 표현에 대해 문의 언어를 할 수있는 기능을 제공합 문장을 해석하는 언어입니다. 아래 코드 조각에 더체를 해석할 수 있”operand1+operand2″그리고 무엇을 알고있는 표현이다. 구조를 너무 많이 변경하지 않고도 더 많은 통역사를 추가 할 수 있습니다. 그런 다음 파서는 해석기를 사용하여 입력을 이해합니다.,Iterator 는 기본 구조를 알 필요없이 컨테이너의 요소에 액세스하기 위해 데이터 컨테이너를 트래버스하는 데 사용됩니다. 또한 객체 또는 데이터 구조 자체의 인터페이스를 변경하지 않고도 새로운 순회 변형을 추가 할 수 있습니다.
아래에 묘사 된 ChannelSurfer 는 연속적인 방식으로 채널에 액세스 할 수 있습니다. RemoteControl 객체는 채널이 어떻게 구성되어 있는지 신경 쓸 필요가 없습니다. 예를 들어 RandomChannelSurfer 는 많은 문제없이 추가 될 수 있습니다.,

중재자

경우 두 개 이상의 객체를 필요로 협력하는,중재인 패턴을 적용될 수 있습니다. 특히 경우 객체를 알 수 없는 경우,서 그들은 밀접하게 결합 또는 그들의 상호 작용은 복잡한 패턴이 도움이 될 수 있습니다.
아래 예제에서는 UI 요소간에 필요한 상호 작용이 있습니다. 이 상호 작용은 인증을 통해 일어나고 있습니다.매개체로서의 다이얼로그. 이런 식으로 상호 작용은 참여 객체 중 하나에서 정의되지 않고 중재자로 추출됩니다.,

기념

기념 패턴이 유용한 경우 특정 개체의 상태를 저장해야에 대한 후 사용합니다. 따라서 해당 객체의 구현 세부 사항의 캡슐화를 위반하지 않습니다. 예를 들어 실행 취소 메커니즘의 구현에 사용할 수 있습니다.

에서 관찰자의 패턴을 관찰자의 개체가 가입을 관찰 가능한 개체를 통지 매시간 관찰할 수 있는 변경 데이터입니다., 관찰자는 느슨하게 결합되어 있으며 런타임에 추가 및 제거가 가능합니다.
관찰자가 관찰 가능한 데이터를 최종적으로 얻는 방법과 관련하여 푸시 및 풀의 두 가지 변형이 있습니다. 아래의 코드를 표시 풀 변종,어느 것이 더 유연한 이 경우에서와 같이 관찰되지 않는 방법을 알 필요가 관찰자가 원하는 데이터를 받을 수 있지만,관찰자를 가져올 수 있습으로 데이터를 바랐다.

상태

국 패턴에 있는 객체를 변경할 수 있는 행동을 때의 내부 상태 변경합니다., 이 패턴은 전략 패턴과 유사하지만이 경우 객체가 어떻게 동작하는지 내부적으로 결정됩니다. 복잡한 조건이 객체가 어떻게 동작해야 하는지를 정의하는 경우 특히 유용합니다. 새로운 상태는 기존 상태와 독립적으로 추가 될 수 있습니다.

전략

에서의 컨텍스트 전략 패턴 존재 여러 개를 위한 알고리즘 한 변은 선택을 실행할 수 있습니다.,
아래의 예에서 Compressor object 는 런타임에 정의 된 두 가지 다른 알고리즘 중 하나와 함께 사용할 수 있습니다. 작업을 실행하는 메소드(createArchive)는 선택한 알고리즘을 적용합니다.

템플릿

템플릿 패턴을 정의 구조를 위해 서브 클래스에서는 단계를 알고리즘 및 그들의 순서로 정의됩니다. 이렇게하면 하위 클래스가 동일한 단계를 따르고 더 나은 개요와 일관성을 제공합니다., 또한 하위 클래스에서 재정의 할 수있는 단계에 대한 기본 구현을 정의 할 수 있습니다.
아래 그림과 같이 dataparser 에서 상속하는 모든 파서는 parse()가 실행될 때 동일한 단계를 따릅니다. 이것은 예를 들어 모든 파서가 파일을 닫고 상태를 기록하도록 보장합니다.

방문자

의 방문 패턴을 적용하는 하나 이상의 작업을 설정합체의 실행하지 않고 시간 운영와 밀접하게 연관되어 있으므로 객체 구조입니다.,
이것은 다른 구체적인 함수에 대한 함수 호출이 두 객체의 런타임 유형에 따라 이중 디스패치를 구현하도록합니다. 아래 예에서 한 손으로이 경로 요소와 다른 한편으로 측 방문자는 개체를 각 실행하는 다른 기능에 요소입니다. 앞으로 더 많은 방문자가 추가 될 경우 경로 요소를 변경할 필요가 없습니다.


답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다