TL; DR: Ich würde Ihnen empfehlen, einen DI Framework wie Typhoon verwenden sollten, und dass Griff Instanziierung lassen.
Der Grund, warum Sie wahrscheinlich nicht möchten, dass Ihre Wireframes alles in einem VIPER-Modul (View, Presenter, Interactor, DataManager) instanziieren, ist, dass Sie Abhängigkeiten direkt zu jeder dieser Komponenten erstellen.
Abhängigkeiten machen Software beständig zu ändern: auf, wenn wir es mit unseren onion architecture/hexagonal architecture Hüten denken, die Grenzen von mindestens zwei getrennten Schichten der Zwiebel würden überqueren die Drahtgitter von etwa nicht nur die Aussicht zu wissen, aber die Daten Manager.
Dies zwingt uns, Wireframes als generische Infrastrukturklasse zu behandeln: d. H. Etwas auf der äußersten Ebene Ihrer Anwendung.
Dies widerspricht jedoch die andere (und die mehr echte) Verantwortung des Drahtmodells: Navigation zu tun. Während dies immer noch die Infrastrukturschicht ist, gehört sie fest und spezifisch in UIKit
(-presentViewController:
etc.).
Also IMHO, VIPER Drahtmodell macht zu viel.
Das einzig Vernünftige ist, die beiden Aufgaben aufgeteilt:
- Initialisierung von VIPER Klassen: Sie factory vorstellen können, oder DI-Tools verwenden, die dieses Problem entwickelt werden
- tun Navigation zu lösen: das bleibt in der Zuständigkeit eines
Wireframe
.
Zusätzliche Hinweise
Wenn Sie sich fragen, „die das nächste Modul instanziiert?“, Dann wieder, IMHO, ich denke, es ist nicht richtig, dass einige Module A
‚s Drahtmodell spricht mit Module B
‘ s Drahtgitter trotz was die VIPER post sagt.
Der Grund dafür ist, dass Module A
würde jetzt auf Module B
abhängig gemacht werden, was eine enge Kopplung verursacht: dies den Zweck der Module. Viel mehr Diskussion über dieses Thema bei VIPER-TODO project at GitHub =]
Hoffe das hilft.
Generell bevorzuge ich Wireframe, um sein Modul zu erstellen, Wenn wir alle Module beim Starten erstellen, dann wenn es viele Module gibt, dann macht es keinen Sinn, also stimme ich zu, dass der zweite Ansatz besser ist. – Abhishek