如何使用设计模式实现最便宜的Hotel Finder?

时间:2011-12-26 07:50:05

标签: java oop design-patterns

6个月前,我接受了一次ThoughtWorks的采访,并且正在进行编码。 我想提高我的OO设计技能

我首先阅读了Head First Design模式,并对常见的设计模式有了基本的了解。 当我正在iOS上工作时,我正在学习Objective C.并且遇到了各种设计模式,通过动态语言应用并了解事物。

但是,我仍然希望确定在此示例问题中使用的模式的适当选择。

并且可能是关于如何提高这些技能的一些提示。

这是问题所在。

有连锁酒店。 LakeWood,Rosewood和xyzWood有三个分支。 所有这4种费率取决于组合,无论是工作日,周末,客户是奖励还是定期。

用户输入是他希望留在酒店及其类型之一的一系列日期。 输出应该是最好的酒店,取决于哪个是最便宜的住宿。 在平局的情况下,每个酒店都会有评级,而评分更高的评级则决定领带。 和程序应该是灵活的,以便新的算法可以用来找到最好的酒店,如果酒店结构的任何变化或更多的酒店被添加。

我带来了以下关于java的课程。

  • 酒店:有评级,名称和4种费率
  • HotelFinder界面,它有一个返回酒店的查找方法。
  • 实现此界面的CheapestHotelFinder类,具有Customer或Customer类型等属性,可以是枚举[不确定]和日期列表。
  • 可能是客户类,其中客户详细信息为日期类型,此客户将提供给查找程序。
  • 有没有办法可以将类似的界面用于酒店课程?
  • 和预订系统Singleton课程,可以为我们完成所有工作。

我被困在这里。我希望有人能帮我解决这个问题。

2 个答案:

答案 0 :(得分:1)

我认为@root选择了策略(http://en.wikipedia.org/wiki/Strategy_pattern)因为这句话“程序应该灵活,以便可以使用新算法找到最佳酒店”。

似乎对于每种类型的酒店,可能有不同的方式来评估它们,因此策略可以是一种方式来评估每个酒店的不同方式。

这种方法会将数据(酒店bean)与评估算法分离(或者我们称之为“特征向量函数”?)。

答案 1 :(得分:0)

我认为模板方法模式更适合这里。  1.创建酒店界面  2.创建3个酒店类(实现酒店界面)LakeWood,Rosewood和xyzWood

  1. 现在创建客户类,它也会有一系列日期。

    这里的Customer类和酒店类都是独立的。

  2. 现在创建一个接口说LogicInterface,它将有一个方法,这个方法会 通过客户和列表酒店作为参数,将返回最便宜的酒店。 现在我们将创建实现LogicInterface.cheap的类,酒店查找逻辑将是 在这堂课上 这里将使用“模板方法模式”,因为后来和最便宜的酒店发现 逻辑被改变,我们将创建将实现LogicInterface的新类 只需一行更改即可完成我们的工作,不需要进行任何代码更改。