6 个月前,我参加了 ThoughtWorks 面试,但在编码轮次中被淘汰。 我想提高我的面向对象设计技能
我首先阅读了 Head First Design 模式,并了解了常见设计模式的基本概念。 当我现在在 iOS 上工作时,我正在学习 Objective C,并且遇到了通过动态语言应用的各种设计模式并了解了事物。
但是我仍然想确定在这个示例问题中使用什么模式是合适的。
并且可能有一些关于如何提高此类技能的提示。
问题就在这里。
有一家连锁酒店。有 LakeWood、Rosewood 和 xyzWood 三个分支。 所有 4 种费率取决于当天是工作日、周末以及客户是奖励还是常规的组合。
用户输入是他想要入住其中一家酒店及其类型的一系列日期。 输出应该是最好的酒店,具体取决于哪家酒店是整体住宿最便宜的。 如果出现平局,每家酒店都会有评级,评级较高的酒店将决定平局。 程序应该灵活,以便可以使用新算法来找到最佳酒店,并且如果酒店结构发生任何变化或添加更多酒店。
我为我们提供了以下 Java 方面的课程。
我被困在这里了。我希望有人能帮助我设计。
我认为@root选择了策略(http://en.wikipedia.org/wiki/Strategy_pattern),因为这句话“程序应该灵活,以便可以使用新算法来找到最好的酒店”。
看来对于每一种酒店,可能都有不同的评估方法,所以Strategy可能是一种对每家酒店有不同评估方法的方法。
这种方法会将数据(酒店bean)与评估算法解耦(或者我们可以将其称为“特征向量函数”吗?)。
我认为模板方法模式更适合这里。 1.创建酒店界面 2. 创建3个酒店类(实现酒店接口)LakeWood、Rosewood 和 xyzWood
现在创建客户类别,它也会有一系列日期。
这里Customer类和Hotel类都是独立的。
现在创建一个接口,比如 LogicInterface,它将有一个方法,并且该方法将 传递给客户并列出酒店作为参数,并将返回最便宜的酒店。 现在我们将创建实现 LogicInterface.cheap 酒店查找逻辑的类 在这堂课上 这里将使用“模板方法模式”,因为稍后会找到最便宜的酒店 逻辑发生变化,我们将创建新的类来实现 LogicInterface 只需更改一行即可完成我们的工作,无需更改任何代码。
使用策略模式实现 HotelSearchService,以便根据用户偏好有效地查找最便宜的酒店