myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns
» Datenschutzerklärung
» Impressum

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Rund um die Programmierung » Architektur: Instanzen von zufälligen Klassen erzeugen
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Architektur: Instanzen von zufälligen Klassen erzeugen

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
kleinrechner kleinrechner ist männlich
myCSharp.de-Mitglied

Dabei seit: 20.03.2018
Beiträge: 13


kleinrechner ist offline

Architektur: Instanzen von zufälligen Klassen erzeugen

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo,
ich schreibe gerade eine kleine private Anwendung, bei der es sich um eine Art Diashow mit mehreren Effekten handeln soll.
Die Effekte sollen per Zufall angezeigt werden.

Bei der aktuellen Architektur handelt es sich um eine Mischung aus Decorator- und Strategie-Paddern.
Ich hab versucht die Architektur im angehängten Bild darzustellen.
Das Frontend wird aktuell über Decorator zusammengesteckt, wobei die jeweilig erforderlichen Daten, im Konstruktur übergeben werden, das führt dazu, dass sich die Konstruktoren für alle Klassen unterscheiden.
Die Instanzen werden über eine Factory erzeugt, die auch die jeweiligen Media-Klassen (also Image, Sound und Text-Files, mit den jeweiligen Filtern erzeugt und den Anzeige-Klassen übergibt).

Dadurch haben wir eine schöne Trennung zwischen den Anzeige-Klassen und dem Auslesen der Daten, auf der anderen Seite wird dadurch die Factory sehr komplex und muss für jede Klasse schauen, wie die erzeugt werden muss und welche Abhängigkeiten bestehen.
Die Anzeige-Klassen wissen natürlich am besten, welche Daten sie benötigen, wenn ich die Respository-Services übergeben würde, könnten sich die Anzeige-Klassen die Daten selber holen, sie benötigt werden, aber dann ist die Trennung zwischen Anzeige und Logik wieder vermischt, aber die Klassen-Instanzierung wäre einheitlich.
Also einfach ausgedrückt, "Logik in Factroy, Trennung von Anzeige" vs "Schlanke Factory und Logik in Anzeige".
Es soll in Zukunft beliebig viele Filter geben können, um für jeden Filter eine eigene Ansicht zu erzeugen, wäre etwsa umständlich, die Filter in der Factory zu erzeugen, macht diese wieder komplexer.

So richtig gut, gefallen mir beide Lösungen nicht, vielleicht übersehe ich auch irgendwas und jemand hat eine Idee, wie man die Architektur deutlich einfach zusammenbauen kann.

cu
Christian

kleinrechner hat dieses Bild (verkleinerte Version) angehängt:
Architektur.png
Volle Bildgröße

14.01.2019 08:49 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 12.639
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hast Du Dir mal Reactive Extensions angeschaut?
Damit kann man das Thema sehr sehr sauber abstrahieren und entkoppeln.

Am Ende bleibt natürlich die Frage, "wie perfekt" Du die Lösung haben willst.
Eine Architektur entwickelt sich wie jedes andere Teil einer Anwendung auch weiter..
14.01.2019 10:53 Beiträge des Benutzers | zu Buddylist hinzufügen
kleinrechner kleinrechner ist männlich
myCSharp.de-Mitglied

Dabei seit: 20.03.2018
Beiträge: 13

Themenstarter Thema begonnen von kleinrechner

kleinrechner ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo,
hab mich zwar noch nicht intensiv mit ReactiveExtensions beschäftigt, sie sind mir aber bekannt, wie ich das bis jetzt immer verstanden hatte, ist das ein Framework, um auf Antworten von einem Stream, WebService etc zu reagieren, so hab ich das jetzt auch der Website entnommen.

In wie weit mir das bei meinem Problem weiterhilft, hab ich noch nicht ganz verstanden, kannst du dazu evlt noch 1-2 Sätze schreiben?

Vielen Dank

cu
Christian
14.01.2019 11:08 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 12.639
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zitat von kleinrechner:
Antworten von einem Stream, WebService etc zu reagieren, so hab ich das jetzt auch der Website entnommen.

Nein; nicht wirklich. Reactive Extensions ist viiiiiel mehr.

Im Prinzip will ich damit auf entkoppelte Bindungen, Events und Messages hinaus.
Ob am Ende damit eine API getriggert wird oder Deine Business-Logik: völlig egal.

Mit Observable.Generate kannst dann eine zufällige Liste von Elementen erstellen.
Da ist keine große Architektur (mehr) notwendig; zumindest für diesen Part. Die Architektur selbst ist ja deutlich mehr als dieser Screenshot...
14.01.2019 11:48 Beiträge des Benutzers | zu Buddylist hinzufügen
kleinrechner kleinrechner ist männlich
myCSharp.de-Mitglied

Dabei seit: 20.03.2018
Beiträge: 13

Themenstarter Thema begonnen von kleinrechner

kleinrechner ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Danke für die Info, ich werde mir das mal etwas genauer anschauen.
14.01.2019 12:36 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 4 Monate.
Der letzte Beitrag ist älter als 4 Monate.
Antwort erstellen


© Copyright 2003-2019 myCSharp.de-Team | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 22.05.2019 05:05