首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

灵巧的状态机实现片段

2012-11-19 
精巧的状态机实现片段public enum SniperState {JOINING {@Override public SniperState whenAuctionClose

精巧的状态机实现片段

public enum SniperState {  JOINING {    @Override public SniperState whenAuctionClosed() { return LOST; }  },  BIDDING {    @Override public SniperState whenAuctionClosed() { return LOST; }  },  WINNING {    @Override public SniperState whenAuctionClosed() { return WON; }  },  LOST,  WON;  public SniperState whenAuctionClosed() {    throw new Defect("Auction is already closed");  }}


Sniper 英语是狙击手的意思,在这个程序的上下文中表示拍卖交易中的自动出价器。它的状态包括刚刚加入拍卖交易过程、正在出价但未占上风、正在出价但暂时领先、已经失败、已经成功拍下。whenAuctionClosed() 是一个事件回调,表示拍卖交易已经关闭时的回调。

因为已经失败和成功拍下这两个状态都是最终状态,所以调用 whenAuctionClosed() 会抛异常。而其它几个状态会重载这个方法,返回交易关闭后对应的状态。

这段代码摘自 <<Growing Object-Oriented Software, Guided by Tests>>。

热点排行