我们正在创建拍卖网站。有不同类型的拍卖。根据拍卖类型,获胜者声明已经完成。
例如: - *在一种类型的拍卖中: - 出价更高的用户。 *其他类型: - 最低出价获胜的用户。 *某种类型: - 所有者决定胜利者。 *在某些类型: - 前10名竞标者赢得拍卖。
似乎策略模式非常适合设计决定“拍卖获胜者”的模块。
所以
根据“拍卖类型”,系统将选择适当的算法来决定获胜者。将提供拍卖类型所需的所有参数以便选择获胜者。 我正在考虑使用策略模式(可能采用AOP方式)来获取winsdeclare模块。
该应用程序基于SpringFramework,任何人都可以建议我一个优雅的设计来处理上面提到的问题。 我应该使用哪种模式?我应该去AOP吗?
如果需要,我可以提供更多详细信息。
提前谢谢。
答案 0 :(得分:3)
这是一个广泛的问题,我的答案是尝试并专注于使用简单的面向对象结构正确建模问题,而不是“适合这里的模式”。模式最有可能出现,你不需要立即命名。
另外,如果你是Spring的新手,我建议忘记AOP。它现在对你没用。此外,使用AOP也不会有帮助。
p.s策略似乎很好。
答案 1 :(得分:3)
对于这个问题,没有任何特定于Spring的内容。是的,策略模式可能是正确的选择。
创建服务界面以确定拍卖获胜者并创建其一个或多个实施。在您的业务代码中,始终引用服务接口,而不是实现类,这样您就可以轻松切换实现(使用或不使用Spring)。 (阅读Joshua Bloch的Effective Java以更好地理解使用接口编程)
忘掉Spring AOP。它解决了许多问题,但不是你的问题。您的问题是定义应用程序的核心模块并将它们连接在一起(通常使用Spring或其他DI容器完成)
基本上,当您创建服务界面时,您需要决定“这件事应该做什么?”当你实现界面时,你决定“这件事应该怎么做?”
答案 2 :(得分:0)
您可以使用以下方案:
一个主bean,有一个bean列表。每个bean代表一个流程(“最高出价”,“最低出价”等)。让我们称它们为flowBeans
每个flowBean都应该有一个或多个choiseBeans。
choiseBean根据拍卖的输入决定flowBean是否应该执行。
很抱歉无法提供示例。
PS:除了我的建议,我同意cherouvim!