Ich fing an, eine kleine Anwendung zu entwerfen und einige Architektur-bezogene Fragen zu haben.C# Design-Frage
Ich habe einige grundlegende Einheiten, die ich bereit bin zu modellieren - Repository
und Indicator
.
Repository
ist im Grunde eine Fassade der Repository Pattern
verwenden, das/Speicher-beliebige Einheiten abzurufen die Lage ist, eine Datenbank Halter mit (jetzt ist es NHibernate
-driven, aber ich denke, das ist nicht wirklich wichtig).
Die Indicator
kann der logische Kern meiner Anwendung genannt werden. Es wird verwendet, um abstrakte Werte und die genaue Zeit zu kombinieren, zu der dieser Wert erreicht wurde (so bildet es und arbeitet an Value - Time
Paaren).
Ich bin bereit, diese Indicator
so allgemein wie möglich zu machen, noch glaube ich meine aktuelle Lösung ist ein großer scheitern :)
Siehe folgende Stücke von Code:
public interface IIndicator<T>
{
IEnumerable<T> RetrieveValues(DateTime start, DateTime end);
}
// Should also have something like indicator wrapper/proxy stub here - anything
// that represents the 'IIndicator' interface acts through that proxy and
// caches the evaluated data using it.
Dies ist ein grundlegender Versuch, den Indikator zu implementieren (im Moment kann dies tatsächlich als Schein betrachtet werden):
jetzt - könnte dies gut aussehen, aber ich bin absolut sicher, dass die verwendete TimestampProxy
wirklich böse ist.
Es macht auch die Dinge hart zu verstehen (zum Beispiel Methodensignatur IEnumerable<TimestampProxy> RetrieveValues(...)
wahrscheinlich in einem führen würde „wtf ?!“ Phrase von einer Person, die den Code untersucht).
Leider kann ich nicht mit einer bessere Lösung/global Redesign kommen - können Sie mir raten, wie es zu tun oder einfach nur ein paar Ideen darüber erzählen, wie diese Art der Funktion sollte getan werden?
Danke.