一个简单的德州扑克比大小游戏
都是散牌的话, 比较各自五张牌中数字最大的
对子(两张牌数字相同)大于散牌
都有对子则比较对子之间大小
顺子(五张牌数字连续)大于对子
发牌
动作发牌
, 计算玩家牌型比较
等5张牌
及其牌型结果
对象等, 该类实现Comparable
作为内部排序, 调用comparing逻辑实现玩家的输赢
牌色
和牌数字
, 很明显, 这2个对象都用枚举来存储, 该类实现Comparable
接口作为集合的内部排序牌色
, 包括红心, 黑桃, 草花, 方块
牌数字
, 2-A, 其中A最大, 抽象成数字14表示牌型
, 如high card
, one pair
等10种牌型高牌
, 依次比较最大牌即可牌型解析器
作为一个单独的类自己实现其解析逻辑, 如FourOfTheKindRankingImpl
用于检验5张牌是不是四条
解析类
都具有可插拔的性质, 全部注册在门面类RankingFacade中, 如题目要求只要四个规则, 即注册对应的4个解析类即可XXXRankingImpl
< AbstractRanking
< IRanking
ranking
的解析结果, 使用策略模式
取得对应的比较器
, 比较相同的牌型结果XXXComparingImpl
< AbstractComparing
< IComparing
< Comparator<Player>
ranking
的逻辑, 每个实现类具有可插拔的性质, 如要扩展牌型规则
, 在这里实现具体的解析类
即可comparing
的逻辑, 每个实现类具有可插拔的性质, 如要扩展牌型比较规则
, 在这里实现具体的比较类
即可jdk7
, 未在7以下的版本运行过阿里巴巴java开发手册
, 但还未读完, 因此不完全体现