我们定义了一组策略(StrategyRed, StrategyBlack, StrategyBlue)以及相应的interface(Strategy),
每一种策略都封装了相应的算法algorithm, client (即class Ball) 对于策略的内部变化都是无感知的。
client 需要做的就是策略的创建以及通过StrategyContext来调用创建的策略。
当然,策略的创建也并非直接由client执行,而是应用了上次学过的工厂模式,由工厂(StrategyFactory)进行具体策略的创建(判断ball的颜色,并创建相应的策略)。
在策略class中,为了感知到外部的世界,model(即BallPit)通过参数传递的形式传到了策略内部。