如何使用设计模式实现最便宜的酒店查找器?

问题描述 投票:0回答:3

6 个月前,我参加了 ThoughtWorks 面试,但在编码轮次中被淘汰。 我想提高我的面向对象设计技能

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

但是我仍然想确定在这个示例问题中使用什么模式是合适的。

并且可能有一些关于如何提高此类技能的提示。

问题就在这里。

有一家连锁酒店。有 LakeWood、Rosewood 和 xyzWood 三个分支。 所有 4 种费率取决于当天是工作日、周末以及客户是奖励还是常规的组合。

用户输入是他想要入住其中一家酒店及其类型的一系列日期。 输出应该是最好的酒店,具体取决于哪家酒店是整体住宿最便宜的。 如果出现平局,每家酒店都会有评级,评级较高的酒店将决定平局。 程序应该灵活,以便可以使用新算法来找到最佳酒店,并且如果酒店结构发生任何变化或添加更多酒店。

我为我们提供了以下 Java 方面的课程。

  • 酒店:有评级、名称和 4 种价格
  • HotelFinder 接口,有一个返回 Hotel 的 finder 方法。
  • CheapestHotelFinder 类实现此接口,并具有诸如 Customer 或 Customer 类型之类的属性,可以是枚举[不确定]和日期列表。
  • 可能是一个客户类,其中客户详细信息是日期 n 类型,并且该客户被提供给查找者。
  • 有没有一种方法可以将类似的接口用于酒店类?
  • 还有一个预订系统 Singleton 类,可以为我们完成所有工作。

我被困在这里了。我希望有人能帮助我设计。

java oop design-patterns
3个回答
1
投票

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

看来对于每一种酒店,可能都有不同的评估方法,所以Strategy可能是一种对每家酒店有不同评估方法的方法。

这种方法会将数据(酒店bean)与评估算法解耦(或者我们可以将其称为“特征向量函数”吗?)。


0
投票

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

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

    这里Customer类和Hotel类都是独立的。

  2. 现在创建一个接口,比如 LogicInterface,它将有一个方法,并且该方法将 传递给客户并列出酒店作为参数,并将返回最便宜的酒店。 现在我们将创建实现 LogicInterface.cheap 酒店查找逻辑的类 在这堂课上 这里将使用“模板方法模式”,因为稍后会找到最便宜的酒店 逻辑发生变化,我们将创建新的类来实现 LogicInterface 只需更改一行即可完成我们的工作,无需更改任何代码。


0
投票

使用策略模式实现 HotelSearchService,以便根据用户偏好有效地查找最便宜的酒店

© www.soinside.com 2019 - 2024. All rights reserved.