zoukankan      html  css  js  c++  java
  • 策略模式

    为什么有?
       有些时候,我们在不同的情况下我们对一件事会有不同的策略,比如说京东,我们都是知道京东在双十一或者在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来播放不同的歌曲,这就是策略模式,将策略声明在外部,并持有策略的接口对象,在不同的请情况下为其灵活的设置不同的策略;







  • 相关阅读:
    HDU 3511 圆的扫描线
    POJ 2540 半平面交
    POJ 2451 半平面交nlogn
    POJ 3525 半平面交
    HDU 3629 极角排序
    POJ 1274 半平面交
    POJ 1696 凸包变形
    POJ 3384 半平面交
    Flex SDK代码规范之命名
    Flash & Flex组件优化的杀手锏callLater
  • 原文地址:https://www.cnblogs.com/Jxiaobai/p/6617495.html
Copyright © 2011-2022 走看看