设计模式 面试题

学人智库 时间:2018-01-17 我要投稿
【www.unjs.com - 学人智库】

近几年来,设计模式试题已广泛出现在一些IT企业(包括一些巨牛型企业)的面试和笔试题中,从本文开始我将通过几篇文章来介绍一下一些已出现过的设计模式面试和笔试题,欢迎大家讨论。

某房地产公司欲开发一套房产信息管理系统,根据如下描述选择合适的设计模式进行设计:

(1) 该公司有多种房型,如公寓、别墅等,在将来可能会增加新的房型;

(2) 销售人员每售出一套房子,主管将收到相应的销售消息。

参考解答:【个人观点】

对于描述(1)可以选择使用工厂方法模式,对于描述(2)可以选择使用观察者模式,本题参考类图如下所示:

在类图中,HouseCreator是抽象房屋工厂类,其子类VilladomCreator用于创建别墅Villadom,子类ApartmentCreator用于创建公寓Apartment,Villadom和Apartment都是抽象房屋类House的子类,此时应用了工厂方法模式,如果增加新类型的房屋,只需对应增加新的房屋工厂类即可,原有代码无须做任何修改;House类同时作为抽象观察目标,子类Villadom和Apartment作为具体观察目标,相关人员类Stakeholder作为抽象观察者,其子类Manager(主管)作为具体观察者,实现了在Stakeholder中声明的response()方法,当房屋售出时,房屋的状态status将发生变化,在setStatus()方法中调用观察者的response()方法,即主管将收到相应消息,此时应用了观察者模式。

[设计模式 面试题]