策略模式
为什么有?
有些时候,我们在不同的情况下我们对一件事会有不同的策略,比如说京东,我们都是知道京东在双十一或者在618都会做不同的活动。这时候我们就会用到我们的策略模式。
这里我们通过CD机和CD来举例子,大家都知道CD机是可以通过更换CD来播放不同的歌曲的,这就相当于不同的播放策略,但也有一部分CD机是通过内置的很多歌曲来解决这个问题的,比如说有些小孩子的故事机。显而易见的是,无论你内置再多的歌曲,也不可能把所有的歌曲全部罗列出来,这样的程序就不够灵活。下面我们来将这两种CD机进行对比,体会策略模式的优势。
/** 这里是老式CD机*/public class OldCDplayer {public void playMusic(String singer){if(singer == "jay"){System.out.println("我是周杰伦我在演唱");System.out.println("青花瓷");System.out.println("双截棍");System.out.println("七里香");System.out.println("发如雪");}else if(singer == "li"){System.out.println("我是李荣浩我在演唱");System.out.println("模特");System.out.println("李白");System.out.println("爸爸妈妈");}else{System.out.println("没有该歌手");}}}
public class NewCDplayer {private CD cd;public void setCd(CD cd) {this.cd = cd;}public void playMusic(){cd.sing();}}
在新CD机中我们可以通过为CD机设置不同的CD来播放不同的歌曲,这就是策略模式,将策略声明在外部,并持有策略的接口对象,在不同的请情况下为其灵活的设置不同的策略;

浙公网安备 33010602011771号