Artigos

Tire duas dúvidas com o especialista no assunto Dr. Daphnis Citti de Lauro

c++ listener 예제

DEM의 이벤트는 개체로 표시되며 모두 이벤트의 소스 개체를 아는 EventObject 클래스에서 파생됩니다(그림 4). 필수는 아니지만 EventObject의 하위 클래스는 이벤트와 관련된 추가 속성을 추가하는 것이 일반적입니다. 예를 들어, KeyboardEvent는 키를 누른 등을 알 수 있습니다. EventObject의 샘플 정의: 이 예제에서는 형식의 일반적인 사용을 이벤트로 간주하기 위해 std:::strings를 사용하여 이벤트를 나타냅니다. 서버 개체(예: 이벤트 원본)가 클라이언트 개체에 콜백을 등록하고 클라이언트에 메시지를 보내야 하는 경우(예: 이벤트 수신기) 클라이언트 개체가 클라이언트 인터페이스를 구현하도록 요구하여 더 낮은 커플링을 달성합니다. 서버 개체는 클라이언트 인터페이스 유형측면에서만 클라이언트 의 형식에 대해 알고 있습니다. 구체적인 클라이언트는 추상 클라이언트 인터페이스에서 상속또는 구현됩니다. 따라서 패턴 이름 추상 클라이언트입니다. DEM에서 수신기 인터페이스 정의는 추상 클라이언트 정의이며 이벤트 소스는 이벤트 수신기 클라이언트에 콜백을 등록하는 서버입니다. 수신기가 구현하는 이벤트 처리 메서드는 콜백 메서드입니다. 이 예제는 서비스 이벤트를 수신하는 간단한 번들을 만듭니다. 이 예제는 서비스 등록 및 등록 취소에 대한 세부 정보만 인쇄하기 때문에 처음에는 별로 수행되지 않습니다. 다음 예제에서는 서비스를 구현하는 번들을 만들어 이 번들이 실제로 무언가를 하도록 합니다.

지금은 이 예제를 사용하여 번들 및 활성화기 만들기의 기본 을 이해할 수 있습니다. 관찰자 패턴에서 사용하기 위해 상당히 일반적이고 최소한의 주제 유형에 도달했습니다. C++11 숙어와 표준 라이브러리 구성 요소를 사용하여 몇 줄의 명확한 코드만 으로 작업 구현에 도달했습니다. 관찰자를 나타내기 위해 다형성 함수 개체를 사용하기 때문에 피사체를 “관찰”하는 것을 결정하는 데 유연성이 매우 큽니다. 사용자 정의 형식, 람다 식(위의 예에서 볼 수 있듯이), 정적 멤버 또는 비멤버 함수 또는 사용자 정의 functor 인스턴스의 바인딩된 멤버 함수를 전달할 수 있습니다. 코드 샘플은 github에서 찾을 수 있습니다. 위의 명령은 eventlistener 번들을 시작했습니다(암시적으로 공유 라이브러리로드).