C# 이벤트를 통해 템플릿 메소드 패턴을 구현하는 것이 좋은 관행입니까?
-
21-08-2019 - |
문제
나는 이제 몇 가지 코드를 이해하려고 노력하고 있으며 패턴을 찾았습니다. 'EditorOpen'이벤트가있는 사용자의 컨트롤 클래스가 있습니다. 처음에는 MSDN에서 제안한 것처럼이 이름이 '-ing'또는 '-ed'로 끝나지 않기 때문에이 이름이 잘못되었다고 생각했습니다. 그러나 나중에 나는이 이벤트가 일어나는 일에 대해 알지 못하지만 실제 작업을 수행하는 것은 일종의 요청입니다. 이것은 클라이언트 코드로, "편집기의 오프닝"을 수행 할 것으로 예상됩니다!
나는 이것이 실제로 어떤 형태의 템플릿 메소드 설계 패턴이라는 것을 알게되어 약간 놀랐습니다. 여기서 단일 액션 자리 표시 자와 연결된 여러 조치가있을 수 있습니다.
나는 그것이 매우 흥미 롭다고 생각하지만, 그러한 경우에 이벤트를 사용하는 것이 오해의 소지가있을 수 있다는 것을 두려워합니다. 어쨌든, 우리는 여기에서 이벤트에 대해 이야기하는 것이 아니라 요청에 대해 이야기하고 있습니다. HM ... 아마도 이벤트의 이름 만 'editorOpeningRequest'또는 'editorOpeningRequested'라면 괜찮을 것입니다. 어떻게 생각해? 코드 검토 중에 이것을 어떻게 언급 하시겠습니까?
해결책
편집자를 열기위한 요청을 처리하는 여러 개체가있는 이유가 없다면 이벤트 대신 대의원이어야합니다. 이것은 요청의 하나의 핸들러가있는 것으로 제한되며,이 경우 더 논리적으로 보입니다.
더도 나는 당신이 기대할 것에 대해 더 설명 적이므로 개방형으로 이름을 바꿀 것입니다. 이벤트 모델을 고수하면 OpenEditorRequested가 더 나은 이름 일 수 있습니다.
HTH.