[英]Design pattern for interface that determines order of method invocation
我想用数字方法创建一个Java接口。 但我希望接口的用户只能调用我定义的顺序或顺序中的方法。 例如buyTicket()
不应之前调用reserveTicket()
问:有没有关于如何解决这个问题的设计模式或提示?
我考虑过:
一种)
operation
,依此类推。 ReserveTicketOperation
有public BuyTicketOperation execute();
BuyTicketOperation
有public RenderTicketOperation execute();
B)
context
状态机,它使用枚举记录执行位置,并有一个工厂用于获取下一个操作。 任何想法或建议都非常感谢。 谢谢
看看Fluent Builder模式。
这方面的一个例子就在这里。
http://blog.crisp.se/2013/10/09/perlundholm/another-builder-pattern-for-java
这个想法是你有一个'允许方法树'。 树的每个级别都在一个界面中定义。 所以你有一个'接口顺序'。 每个接口中的所有方法都完成它们的工作(必须是无效的),然后返回另一个接口,对应于树的下一级。
我的直接感受:这是根本不做的模式。
如果你的方法的内在逻辑要求他们总是以某种顺序调用它们; 然后,您将公开一个实现细节,这将使您的界面使用起来非常容易。
含义:不是试图以某种方式强迫您的“客户端代码”遵守某些特定的顺序,而是应该以客户端代码不需要关心“顺序”的方式设计接口。
在您的特定示例中,问题似乎是票证对象可以“保留”或“购买”; 当然,只有“买”的门票可以退回,退款,......
在这种情况下,“解决方案”可能实际上是“保留”票和“买”票的不同类。 然后你不必担心有人试图退还只是“保留”的票。
呃,这个问题的答案很简单:在“四人帮: 模板方法”的23个中已经存在一种模式。
整个想法是,你正在准确地描述你正在谈论的一系列操作,但你允许每个单独的操作,以迈耶的术语“开放延伸”。
如果您不确定那些操作在运行时之前是什么,那么TM将无法工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.