首页 / JAVA / 如何在java中实现实体的状态转换?
如何在java中实现实体的状态转换?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何在java中实现实体的状态转换?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1068字,纯文字阅读大概需要2分钟。
内容图文
我的应用程序中有多个实体,如用户,帐户,许可证等.每个实体都有与之关联的状态,如Active,Ok,Suspended,Unverified,PendingPayment,PendingApproval等.我想确保实体可以从预定义状态移动对于另一个用户只能从Ok移动到Suspended但不能从Unverified移动到Suspended.实现这个的最佳设计模式是什么?我环顾四周,大多数时候都会找到状态机来解决这些问题,但它们看起来太复杂了,因为我不想考虑该州的事件.我想要限制的只是国家的过渡.
截至目前,我可以考虑使用预先填充的2D数组来定义每个维度中的所有状态并表示可能的转换.寻找更好的方法.
解决方法:
您可以在JPA枚举类型中使用.看看下面的链接.
http://tomee.apache.org/examples-trunk/jpa-enumerated/README.html
public enum State {
STATE1,STATE2(STATE1),STATE3(STATE1,STATE2);
private State[] previousStates;
private State(){
}
private State(State ...state) {
this.previousStates =state;
}
public State transition(State state) throws Exception {
for(State tmp: state.previousStates) {
if (this == tmp) {
return state;
}
}
throw new Exception("Illegal state");
}
}
通过在Enum中实现方法转换,您将能够轻松地为JPA中的枚举设置新值,您可以将此调用隐藏到set方法中,并且如果状态不正确,它也会抛出异常.
内容总结
以上是互联网集市为您收集整理的如何在java中实现实体的状态转换?全部内容,希望文章能够帮你解决如何在java中实现实体的状态转换?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。