策略模式

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







原文地址:https://www.cnblogs.com/Jxiaobai/p/6617495.html