确定方法调用顺序的接口设计模式

Jac*_*ney 5 java design-patterns

我想创建一个带有多个方法的 Java 接口。但我希望界面的用户只能按照我定义的顺序或顺序调用方法。例如buyTicket()不应该在之前被调用reserveTicket()问:是否有设计模式或有关如何解决此问题的任何提示?

我考虑过:

  • 一种)

    • 接口被包装,只显示下一个可能的方法。方法的每次调用都会返回一个operation可以在它之后调用的新方法,依此类推。
    • 所以ReserveTicketOperationpublic BuyTicketOperation execute();
    • 然后BuyTicketOperationpublic RenderTicketOperation execute();
  • 乙)

    • 使用某种context使用枚举记录执行位置的状态机,并有一个工厂来获取下一个操作。

非常感谢任何想法或建议。谢谢

Gho*_*ica 4

我的第一感觉是:这就是根本不做的模式。

如果方法的内部逻辑要求它们始终按特定顺序调用;那么您将公开一个实现细节,这将使您很容易使用您的界面做错事。

含义:不要试图以某种方式强制您的“客户端代码”遵守某些特定的顺序,您应该以客户端代码不需要关心“顺序”的方式设计接口。

在您的特定示例中,问题似乎是票证对象可以“保留”或“购买”;当然,只有“购买”的门票才能退回、退款……

在这种情况下,“解决方案”可能是为“预订”门票和“购买”门票设置实际上不同的类别。那么您就不必担心有人试图退还仅“预订”的机票。