【问题标题】:What design pattern should I use ? using spring framework我应该使用什么设计模式?使用弹簧框架
【发布时间】:2010-12-31 19:55:15
【问题描述】:

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

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

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

所以

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

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

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

提前谢谢你。

【问题讨论】:

    标签: java spring design-patterns spring-mvc spring-aop


    【解决方案1】:

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

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

    p.s 这里的策略似乎不错。

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

        【解决方案3】:

        您可以使用以下场景:

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

        很抱歉无法提供示例..


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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-07-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-11-27
          • 2023-03-19
          相关资源
          最近更新 更多