너무 커진 MVP 인터페이스 패턴으로 발표자를 나누기위한 좋은 관행은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/835696

  •  08-07-2019
  •  | 
  •  

문제

최근에 자주 발생한 한 가지 문제는 발표자 수업이 너무 커지는 문제입니다. 보통, 나는 비트를 건너 뛰지 않고 정기적 인 큰 수업을 잘릴 수 있습니다. 그러나 발표자들은 때때로 코드를 따르기 어렵게 만들지 않고 파괴하기가 조금 더 어렵습니다.

특히 페이지가 CRUD 지향 컨트롤로 채우기 시작할 때. 때때로 나는 컨트롤을 나누지만 다른 컨트롤의 영향을 받으면 조정 논리가 그 자체로 복잡합니다. 때로는 목록이나 그리드 데이터 검색을 나누지만 때로는 비슷한 함정이있을 수 있습니다.

발표자로부터 리팩터링하는 기술, 경험 규칙 또는 공통 영역이 있습니까?

도움이 되었습니까?

해결책

나는 보통 두 가지 접근법을 사용합니다.

  1. 비즈니스 규칙을 도메인 클래스에 추출하고 위임합니다.
  2. 보기를 논리적으로 관련된 컨트롤로 분할 한 다음 각 파티션에 대한 새로운보기 인터페이스를 만듭니다. 그런 다음 발표자를 동일한 라인을 따라 나눌 수 있습니다. 사용하는 플랫폼이 서브 형태 구성 요소 그룹 (C# 사용자 컨트롤, 델파이 프레임 등)을 지원하는 경우 재사용 가능한 컨트롤을 만드는 강력한 방법입니다.

업데이트

보기를 분할 할 때 일반적으로 인터페이스를 분할하고 내 양식이 여러 인터페이스를 구현하는 것으로 시작합니다.

public class ComplexForm: Form, ISubView, IOtherSubView
{
    ...
}

그런 다음 발표자를 내가 만든 많은 견해로 나누었습니다.

public class SubViewPresenter
{
    private ISubView subView;
    ...
}

public class OtherSubViewPresenter
{
    private IOtherSubView otherSubView;
    ...
}

한 걸음 더 나아가서 isubview 및 iothersubview의 구현을 사용자 컨트롤로 옮기거나 그대로 두십시오. 사용하는 경우 수동적 견해 패턴 패턴 이것은 양식이 어쨌든 UI 논리를 처리하기 때문에 어린이의 놀이입니다. 발표자를 나누면 발표자 간의 직접적인 의사 소통을 피하려고합니다. 의사 소통이 필요한 경우 도메인 객체를 통해 간접적으로 수행하려고합니다.

다른 팁

DAL에 데이터를 전달하는 외부에서 활동을 수행하는 코드를 추출하거나 뷰로 밀어 넣으십시오. 예를 들어, 이메일 업데이트를하거나 비즈니스 로직을 수행 해야하는 경우 별도의 클래스로 추출하십시오. 나는 종종 같은 문제를 다루고 개별 도메인/엔티티 클래스에 가능한 많은 논리를 이동시키고 그곳에서 검증을 수행하려고 노력했습니다.

이것이 도움이되기를 바랍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top