分类: LINUX
2012-10-12 13:40:43
某房地产公司欲开发一套房产信息管理系统,根据如下描述选择合适的设计模式进行设计: (1) 该公司有多种房型,如公寓、别墅等,在将来可能会增加新的房型; (2) 销售人员每售出一套房子,主管将收到相应的销售消息。 |
参考解答:【个人观点】
对于描述(1)可以选择使用工厂方法模式,对于描述(2)可以选择使用观察者模式,本题参考类图如下所示:
在类图中,HouseCreator是抽象房屋工厂类,其子类VilladomCreator用于创建别墅Villadom,子类ApartmentCreator用于创建公寓Apartment,Villadom和Apartment都是抽象房屋类House的子类,此时应用了工厂方法模式,如果增加新类型的房屋,只需对应增加新的房屋工厂类即可,原有代码无须做任何修改;House类同时作为抽象观察目标,子类Villadom和Apartment作为具体观察目标,相关人员类Stakeholder作为抽象观察者,其子类Manager(主管)作为具体观察者,实现了在Stakeholder中声明的response()方法,当房屋售出时,房屋的状态status将发生变化,在setStatus()方法中调用观察者的response()方法,即主管将收到相应消息,此时应用了观察者模式。