策略模式,是我阅读到HeadFirst的第一个模式,其意义很大,在一定程度上让我对于面向对象的思维更加开阔,对于解耦的理解更加深刻了。能让我写出更具有拓展性的代码
比如一个场景,你想要去旅行,那么现在有3种方式可以选择,主要是根据你的荷包的大小来决定出行方式。
直接上代码。
现在完美地解决了出行问题,可是假设你通过努力,获得了更多的财富,你想要选择更加舒适的出行,例如:游轮,那么这个时候你就只能在choose里面修改if判断,那么只添加一个出行方式,或许修改量很小,但是当你添加很多出行方式的时候,就会累死你。而java中,有开闭原则,对拓展开放,对修改关闭,因此,我们需要考虑扩展性的代码。对其进行了修改。
这时候,如果需要添加一种出行方式的话,只需要添加一个实现了BaseGo的接口的类就可以实现了。
所谓的策略模式,便是指将算法封装起来。写扩展性较高的代码。