0

이벤트 중심 개발에 익숙하지 않고 코어/UI 경계를 통과해야하는 이벤트를 구현하려고 할 때 손실이 발생합니다.이벤트 구동 디자인 및 코어/UI 로직 분리

UI.RuleForm Core.RuleList  UI.ResultForm 
Cell 1  Rule 1 
Cell 2  Rule 2 
Cell 3  Rule 3 

내가 원하는 것은 : 내 프로그램에서

나는 다음 (C#의 예)을 가지고 RuleForm 세포 변화, 그것은 RuleList에서 해당 규칙을 업데이트합니다 . RuleList이 변경되면 resultsFrom이 규칙에서 다시 계산됩니다.

현재 코어 로직이 UI 로직과 분리되어 있어야합니다 (즉, 코어는 UI에 대해 알 필요가 없습니다). 코어는 이벤트를 생성 만하고 다른 사람들이 생성 한 이벤트는 처리하지 않아야합니다.

그래서 어떤 종류의 UI.RuleListWrapper을 만들어야 RuleForm 변경 이벤트를 처리 할 수 ​​있으며 Core.RuleList을 업데이트해야합니다. RuleListOnChange 번 발생하며 UI.ResultForm 이벤트를 사용할 수 있습니다.

그래서 요약, 내 질문은 :

내 추론과 목적의 구현이 괜찮 여부, 아마 의미 만약 내가 알고 싶은 : 이 코어 모듈은 외부 UI에 의해 생성 된 이벤트를 처리 할 수 ​​있어야한다 제 분리는 일종의 "mysophobia"입니까, 아니면 이전에 이루어 졌는지입니다. 다른 더 좋은 방법이 있습니까?

답변

2

mvc 태그를 설정했습니다. MVC에는 데이터와 비즈니스 로직 (또는 원하는 경우 도메인 특정 로직)을 포함하는 MODEL이 있습니다. 데이터를 표시하고 사용자 입력을 허용하는 VIEW가 있습니다. 보기에는 엄격한 최소 코드가 포함되어 있습니다. 마지막으로 당신은 CONTROLLER를 가지고 있습니다. CONTROLLER는보기와 모델을 연결하고 모든 것을 조율합니다.

예제에서 누락 된 부분은 컨트롤러입니다.

MVC 패턴은 일반적인 아이디어를 나타내지 만 구현 세부 사항은 지정하지 않습니다. 따라서 MVC의 구현은 매우 다른 방식으로 작동합니다.

모델은 뷰 또는 컨트롤러에 대해 아무것도 모릅니다. 일반적으로 뷰는 컨트롤러를 알지 못합니다. MVC를 구현하는 주요 과제는 M, V 및 C 사이의 적절한 통신 방법을 찾는 것입니다. .NET에서 작업 할 때 객체 데이터 바인딩을 활용하고 뷰를 모델에 직접 바인드하는 것이 좋습니다 . (이것은 "순수한"MVC가 아닐 수도 있지만 아무도 다치게하지는 않습니다.) 모델은 INotifyPropertyChanged을 구현해야합니다. 이 모델을 사용하면 모델이 뷰 및 컨트롤러와 세부 정보를 알지 못해도 통신 할 수 있습니다. 컨트롤러는 모델의 PropertyChanged 이벤트를 선택적으로 구독 할 수 있습니다. 예를 들어 뷰에 컨트롤을 활성화 또는 비활성화하도록 알려주는 등의 속성 변경시 적절한 작업을 수행 할 수 있습니다. 컨트롤러는 뷰의 버튼 클릭 이벤트를 구독하고 적절한 액션을 트리거합니다.

컨트롤러는 다른 컨트롤러와 통신 할 수도 있으므로 다른보기에서 하나의 M-V-C 트리오에서 작업 결과를 표시 할 수 있습니다.