我真的很努力想出一個我正在構建的警報器的設計模式。下面是我試圖做的一個人爲的例子:警報器的設計模式
一個人想要通過天氣類型(雨,雪,太陽等)獲得警報。一個人也可以選擇警報方式(電子郵件,短信,閒暇頻道,時尚聊天室等)
我需要:有一個課程需要天氣類型。然後它檢索所有關心該天氣類型的人。然後它循環遍歷所有人並向他們發送警報(基於人的警報類型首選項)。
這裏是我的基本輪廓,但看起來它應該做的 「更好」:
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;
}
}
}
}
如果你需要討論一個算法或設計模式,你可能應該把問題發佈給程序員.stackexchange.com – Steve
@Steve在引用其他網站時,指出[交叉發佈是皺眉了](http://meta.stackexchange.com/tags/cross-posting/info) – gnat
@gnat絕對正確,我的錯在這裏,但我是如此從程序員看到的一個meta post被拿走,我已經完全忘記 – Steve