반복자
Iterator 는 동작 디자인 패턴입니다. 집계된 각 개체에 대한 설명을 사용하지 않고 집계 개체의 요소에 대한 순차적 액세스를 허용하는 개체를 나타냅니다.
예를 들어 트리, 연결 목록, 해시 테이블 및 배열과 같은 요소는 Iterator 개체를 사용하여 순회(및 수정)할 수 있습니다.
요소를 통한 반복은 컬렉션 자체가 아니라 반복자 객체에 의해 수행됩니다. 이것은 컬렉션의 인터페이스와 구현을 단순화하고 보다 논리적인 문제 분리를 촉진합니다.
완전히 구현된 반복자의 기능은 반복자를 사용하는 코드가 반복 집계의 유형에 대해 아무것도 모를 수 있다는 것입니다.
이 접근법은 매우 자주 사용됩니다. 예를 들어 SQL 쿼리를 데이터베이스에 보내고 이에 대한 응답으로 Iterator(SQL 용어로는 일반적으로 커서라고 함)를 반환합니다. 결과 반복자의 도움으로 SQL 응답에서 하나씩 행을 가져올 수 있습니다.
명령
명령은 동작을 나타내는 개체 지향 프로그래밍에 사용되는 동작 디자인 패턴입니다. 명령 개체에는 작업 자체와 해당 매개 변수가 포함되어 있습니다.
메서드를 호출하려면 일반적으로 다음이 필요합니다.
- 개체 참조
- 메서드 이름(메서드 참조)
- 메소드 매개변수 값
- 사용된 개체를 포함하는 컨텍스트에 대한 참조
이 모든 데이터는 하나의 개체인 명령( command ) 으로 압축되어야 합니다 .
하지만 그게 다가 아닙니다. 결국 누군가는 명령을 실행해야 합니다. 따라서 이 패턴에는 명령( command ), 명령 수신자( receiver ), 명령 호출자( invoker ) 및 클라이언트( client )의 네 가지 항목이 더 포함됩니다.
객체명령리시버에 대해 알고 리시버 메서드를 호출합니다. 수신기 매개 변수 값은 명령에 저장됩니다. 호출자(호출자)는 명령을 실행하는 방법을 알고 있으며 실행된 명령을 추적할 수 있습니다. 호출자(호출자)는 특정 명령에 대해 아무것도 모르고 인터페이스에 대해서만 알고 있습니다.
두 개체(호출 개체 및 여러 명령 개체)는 클라이언트 개체에 속합니다. 클라이언트는 실행할 명령과 시기를 결정합니다. 명령을 실행하기 위해 명령 개체를 호출자(호출자)에게 전달합니다.
명령 개체를 사용하면 클래스 메서드나 메서드 매개 변수를 몰라도 언제든지 메서드를 호출하거나 위임해야 하는 공유 구성 요소를 쉽게 구축할 수 있습니다.
호출자 개체(invoker)를 사용하면 클라이언트가 이 계정 모델에 대해 알 필요 없이 실행된 명령의 기록을 유지할 수 있습니다(이러한 계정은 예를 들어 명령 실행 취소 및 다시 실행을 구현하는 데 유용할 수 있음).
예를 들어 일정에 따라 다양한 작업을 수행할 수 있는 프로그램을 작성하고 있습니다. 한편으로 프로그램은 작업을 추적하고 실행을 관리하며, 다른 한편으로는 각각 고유한 유형의 명령을 실행할 수 있는 여러 실행기를 가질 수 있습니다. 예를 들어 SMS 보내기, 편지 보내기, Telegram으로 메시지 보내기 등
관찰자
관찰자 는 행동 디자인 패턴입니다. 이 클래스의 개체가 다른 개체의 상태 변경에 대한 알림을 수신하여 이를 관찰할 수 있도록 하는 클래스 메커니즘을 구현합니다.
다른 클래스가 구독하는 클래스를 Subject 라고 하고 구독하는 클래스를 Observer 라고 합니다 .
Observer 패턴을 구현할 때 일반적으로 다음 클래스가 사용됩니다.
- Observable - 관찰자를 추가, 제거 및 알리는 방법을 정의하는 인터페이스입니다.
- 관찰자 - 관찰자가 알림을 수신하는 인터페이스입니다.
- ConcreteObservable은 Observable 인터페이스를 구현하는 구체적인 클래스입니다.
- ConcreteObserver 는 Observer 인터페이스를 구현하는 구체적인 클래스입니다.
관찰자 패턴은 시스템이 다음과 같은 경우에 사용됩니다.
- 메시지를 보내는 적어도 하나의 개체가 있습니다.
- 적어도 한 명의 메시지 수신자가 있으며 그 수와 구성은 응용 프로그램이 실행되는 동안 변경될 수 있습니다.
- 상호 작용하는 클래스의 강력한 결합을 피합니다.
이 패턴은 메시지 발신자가 수신자가 제공된 정보로 수행하는 작업에 관심이 없는 상황에서 자주 사용됩니다.
방문객
방문자는 다른 클래스의 개체에서 수행되는 작업을 설명하는 동작 디자인 패턴입니다. 방문자가 변경되어도 서비스 클래스를 변경할 필요가 없습니다.
이 템플릿은 이중 디스패치 다운캐스트에 의지하지 않고 손실된 유형 정보를 복구하는 고전적인 기술을 보여줍니다.
여러 개체에 대해 연결이 끊긴 작업을 수행해야 하지만 해당 코드를 오염시키지 않아야 합니다. 그리고 원하는 작업을 수행하기 전에 각 노드의 유형을 쿼리하고 포인터를 올바른 유형으로 캐스팅할 방법이나 욕구가 없습니다.
다음과 같은 경우 템플릿을 사용해야 합니다.
- 서로 다른 인터페이스를 가진 서로 다른 클래스의 다양한 객체가 있지만 특정 클래스에 의존하는 작업을 수행해야 합니다.
- 구조에서 구조를 복잡하게 만드는 다양한 작업을 수행해야 합니다.
- 구조에 대한 새로운 작업이 종종 추가됩니다.
중재인
중재자는 느슨한 결합을 유지하고 개체가 서로를 명시적으로 참조할 필요를 피하면서 여러 개체가 상호 작용할 수 있도록 하는 동작 디자인 패턴입니다.
중재자 패턴을 사용하면 느슨한 결합을 형성하고 개체가 서로를 명시적으로 참조할 필요가 없도록 하면서 많은 개체의 상호 작용을 보장할 수 있습니다.
중재자는 객체와 정보를 교환하기 위한 인터페이스를 정의합니다.동료, 특정 중개자는 객체의 동작을 조정합니다.동료.
각 동료 클래스는 객체에 대해 알고 있습니다.중재인, 모든 동료는 중개자와만 정보를 교환하며 중개인이 없을 경우 직접 정보를 교환해야 합니다.
동료Reseller/span>에 요청을 보내고 여기에서 요청을 받습니다. 중재자는 각 요청을 하나 이상의동료.
GO TO FULL VERSION