Ich habe wirklich Probleme, ein Designmuster für einen Alerter zu entwickeln, den ich baue. Hier ist ein künstliches Beispiel von dem, was ich versuche zu tun:Welches Designmuster für einen Alerter?
Eine Person möchte eine Warnung nach Wettertyp (Regen, Schnee, Sonne, etc.) bekommen. Eine Person hat auch eine Auswahl an Alarm-Methode (E-Mail, SMS, Slack-Kanal, Hip-Chat-Raum, etc.)
Ich muss: eine Klasse haben, die in einem Wettertyp dauert. Dann ruft es alle Leute ab, die sich für diesen Wettertyp interessieren. Anschließend durchläuft es alle Personen und sendet ihnen eine Warnung (basierend auf der Voreinstellung der Person für den Alarmtyp).
Hier ist meine Grundzüge, aber es scheint, wie es "besser" getan werden sollte:
public class Alerter
{
private readonly WeatherType _weatherType;
public Alerter(WeatherType weatherType)
{
_weatherType = weatherType;
}
public void SendAlerts()
{
var people = PersonRepository.GetPeople(_weatherType);
foreach (Person person in people)
{
switch (person.AlertType)
{
case Email:
var e = new EmailAlerter();
e.SendToPerson(person, _weatherType);
return;
case SMS:
var s = new SmsAlerter();
s.SendToPerson(person, _weatherType);
return;
}
}
}
}
Wenn Sie einen Algorithmus oder ein Entwurfsmuster wahrscheinlich diskutieren müssen, sollten Sie die Frage an programmers.stackexchange.com schicken – Steve
@Steve, wenn Sie andere Sites verweisen, ist es oft hilfreich, das [Cross-Posting ist verpönt] (http://meta.stackexchange.com/tags/cross-posting/info) – gnat
@gnat absolut korrekt, meine Schuld hier, aber ich war so von einem Meta-Post auf Programmierer, die ich gesehen habe weggenommen habe komplett vergessen – Steve