我试图理解设计模式(特别是观察者模式)。我试图为下面的场景(特别是第二段)创建一个设计模式。到目前为止,我已经包含了UML图的图像。请大家告诉我,它是否正确/错误/充分/不足,或者给我一些有用的建议?我尝试过使用观察者模式来建模系统--是否还有其他模式可以用来建模这个场景?
考虑为航空公司设计支持航班预订和航班状态警报的系统。该系统集中存储有关注册客户的信息,并控制客户对该信息的访问。客户保留一份个人资料,描述一些基本信息,包括姓名、居住国、性别、出生日期、电子邮件地址和移动电话号码。客户可以通过输入城市名称或机场代码来搜索航空公司的往返航班。在找到可接受航班的行程后,客户可以购买经济舱、商务舱或头等舱的航班。在完成购买后,客户可以在所选择的航班上选择所支付的服务级别的座位。该系统将将有关航班的警报发送到客户的警报地址,该地址可以是电子邮件地址和/或移动号码,这取决于客户的选择。警报可能表示航班延误、航班取消或系统未来版本中可能引入的对飞行状态的某些其他更改。
在某一时刻,可以在指定的飞行日期购买航班。客户可以在np航班上购买一个座位,到航班日期前一周;在此日期之后,航班将关闭,以便进一步购买座位。此外,一旦一次航班可以购买,它的状态是准时的,直到飞行前一天,在此之后,它可能会因天气延误而延迟,在决定取消航班时被取消,并在成功完成飞行后降落。航班被取消或降落后就不复存在了。
http://i.stack.imgur.com/YB9lJ.jpg
发布于 2011-04-27 10:53:35
观察模式应该没问题。只有注释是您提供的图像不完整。
使用一个可以管理所有subject.
做任何更改了。
当然,这取决于你的需要。
Subject1 ----- ---- Client1
Subject2 ----- ISubject------ Observer implements IObserver --- IClient ---- Client2
---- Client3完成文件夹重命名
发布于 2011-04-28 13:00:17
不像Splendor,我不会使用管理所有观察者的第三级。
它为其他类型的对象添加了complexity.
但是,如果您有一个Car类,您可以派生它为Volvo : Car,并且仍然可以使用订阅服务器。
换句话说,你的设计很好。
请注意,我没有读到你引用的那篇文章。如果您需要更多帮助,请将文本分解为您认为设计模式适用的部分。
https://stackoverflow.com/questions/5797993
复制相似问题