Was ist eine gute Übung für Moderatoren in einem MVP-Schnittstelle Muster aufzuteilen, die zu groß geworden sind?

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

  •  08-07-2019
  •  | 
  •  

Frage

Ein Problem, das ich oft in letzter Zeit laufen haben, ist das Problem meiner Moderator Klassen zu groß wird. Normalerweise kann ich eine regelmäßige große Klasse zerhacken, ohne einen Schlag zu überspringen. Aber die Moderatoren sind manchmal ein wenig schwieriger unten pare, ohne den Code schwerer zu machen zu folgen.

Vor allem, wenn die Seite beginnt mit CRUD orientierte Kontrollen füllt. Manchmal teile ich Kontrollen, aber wenn sie von anderen Kontrollen betroffen sind die Koordinationslogik ist komplex in seinem eigenen Recht. Manchmal teile ich aus Listen- oder Rasterdaten Retrieval, aber manchmal kann, dass ähnliche Tücken haben.

Gibt es Techniken, oder Faustregeln oder gemeinsame Bereiche, die Sie aus Ihren Moderatoren Refactoring?

War es hilfreich?

Lösung

Ich verwende in der Regel zwei Ansätze:

  1. Extrahieren und delegieren Geschäftsregeln Domain-Klassen.
  2. Partitionieren Sie die Ansicht in logisch zusammenhängenden Kontrollen dann für jede Partition eine neue Ansicht Schnittstelle erstellen. Sie können Ihren Moderator entlang der gleichen Linien dann aufgeteilt. Wenn die Plattform, um Ihre Träger subform Komponentengruppen (C # Benutzersteuerungen, Delphi Frames usw.) mit diesem ist eine leistungsfähige Methode wiederverwendbare Kontrollen zu machen.

Aktualisieren

Wenn Ansichten spalten, beginne ich normalerweise durch die Schnittstelle Aufspalten und mit meiner Form mehrere Schnittstellen implementieren.

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

Dann teile ich den Moderator in wie viele Ansichten, die ich erstellt habe.

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

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

Sie können einen Schritt weiter gehen und die Umsetzung von ISubView und IOtherSubView zu Bedienelemente bewegen oder lassen Sie es, wie sie ist. Wenn Sie mit einer passiven Ansicht Mustern ist dies ein Kinderspiel, da die Form ohnehin nur UI-Logik verarbeitet. Sobald ich den Moderator aufgeteilt, versuche ich die direkte Kommunikation zwischen Vortragenden zu vermeiden. Falls eine Kommunikation benötigt wird, ich versuche, es zu tun, indirekt über die Domain-Objekte.

Andere Tipps

Versuchen Sie, den Code zu extrahieren, die Aktivität führt außerhalb von Daten an Ihre DAL vorbei oder es zu der Ansicht drücken. Zum Beispiel, wenn Sie E-Mail-Updates zu tun haben, oder Business-Logik durchführen, versuchen diejenigen aus in separate Klassen zu extrahieren. Ich beschäftige mich oft mit dem gleichen Problem und haben versucht, so viel Logik wie möglich an die einzelnen Domäne / Entitätsklassen zu bewegen und führen die Validierung gibt.

Hope dies hilfreich ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top