1

我们正在创建拍卖网站。有不同类型的拍卖。并根据拍卖的类型,完成获胜者声明。

例如:- *在一种拍卖中:-出价更高的用户获胜。*在其他类型中:- 以最低出价获胜的用户。*在某些类型中:- 所有者决定获胜者。*在某些类型中:- 前 10 名投标人赢得拍卖。

策略模式似乎非常适合设计将决定“拍卖赢家”的模块。

所以

根据“拍卖类型”,系统将选择合适的算法来决定获胜者。将提供拍卖类型选择获胜者所需的所有参数。我正在考虑使用策略模式(可能是AOP方式)来实现winnerDeclare模块。

该应用程序基于 SpringFramework ,任何人都可以建议我一个优雅的设计来处理上述问题。我应该使用哪种模式?我应该去 AOP 吗?

如果需要,我可以提供更多详细信息。

先感谢您。

4

3 回答 3

4

这是一个广泛的问题,我的回答是尝试并专注于使用简单的面向对象结构正确建模问题,而不是“哪种模式适合这里”。模式很可能会出现,您不需要立即命名它们。

另外,如果您是 Spring 新手,我建议您忘记 AOP。它现在对你没有帮助。此外,为了使用它而使用 AOP 也无济于事。

ps 策略在这里似乎不错。

于 2010-12-31T10:29:08.073 回答
3

这个问题实际上并没有任何特定于 Spring 的内容。是的,策略模式可能是正确的选择。

创建一个服务接口以确定拍卖赢家并创建它的一个或多个实现。在您的业务代码中,始终引用服务接口,而不是实现类,这样您就可以轻松地切换实现(使用或不使用 Spring)。(阅读 Joshua Bloch 的Effective Java以更好地理解接口编程)

忘记 Spring AOP。它解决了很多问题,但不是你的。您的问题是定义应用程序的核心模块并将它们连接在一起(通常使用 Spring 或其他 DI 容器完成)

基本上,当您创建服务接口时,您需要决定“这件事应该做什么?” 当你实现接口时,你会决定“这件事应该怎么做?”

于 2010-12-31T11:55:15.680 回答
0

您可以使用以下场景:

一个具有 bean 列表的主 bean。每个 bean 代表一个流(“最高出价”、“最低出价”等)。让我们称它们为 flowBeans。
每个 flowBean 应该有一个或多个choiseBeans。
choiseBean 根据拍卖的输入决定是否应该执行 flowBean。

很抱歉无法提供一个例子..


PS:除了我的建议,我同意cherouvim!

于 2010-12-31T10:38:58.857 回答