设计模式新概念一~IStrategyPattern(策略模式)—详解

以前曾经想把设计模式给一一列举出来形成文档发布,感觉这时间真是个问题,所以现在回想起来要是每天能来一篇,其实占用的时间并不是那么多,好,咋就先从策设计模式中的策略模式先讲起吧,
在设计模式中,策略模式其实很好理解,简单的来说,就是一个场景,一样东西,一种操作,当然需要一定的条件来进行操作,有人这样举了一个很形象的列子,那就是锦嚢妙计的列子,话说刘备去江东取老婆,诸葛亮生怕刘备去招周瑜不快,然特意写了三个妙计放进一个锦嚢里,并有随刘备江东而去的赵云保管,并告知,如告急,可打开,每次一计即可,在这里,可以很清晰的把这个策略模式的分工给划分出来,即妙计是实实在在的,锦囊是用来装妙计的,然,这妙计是由谁来操作执行呢,这就需要一个操作执行人,那就是赵云,所以,在JAVA面向对象编程的语言中,首先我们以类的对象来划分,首先,我们需要有相对的策略,即妙计,咋这里我们想到来三个妙计,第一个是:一旦遇到事情不对,必留后面逃去,第二个,如果在江下遇到拦兵,需要在此处插入自己人~开道,第三个就是:如果在我们逃跑之前,被周瑜发现得早,就需要其猛将进行阻击,好,妙计有了,然后呢,就是执行场景,这个场景就得根据上面的猜测情况来定了,在下来就是执行人,这里毫不犹豫的是赵云一猛也,唔,这些都有了,但是怎么去执行呢,这里就需要一个公共的接口,去操作了,感觉这里列子还是讲得蛮形象的,下面我就把相关的代码给贴出来吧:
首先我们需要定一个公共执行的接口:
public interface IStrategy{
       public void operate(String getMethod);
}
上面接口定义了一个接口IStrategy,里面声明了一个方法,并带了一个参数为获得其参数做相应的操作
 其次我们需要定义其相关的妙计:
妙计一:逃跑
public class Flee implements IStrategy{
        public void operate(String getMethod){
              String getStr = null;
              if(getMethod != null){
                          getStr = getMethod;
               }
               System.out.println("getMethod: " + getStr);
        }
}
 其实上面可以来个返回值,判断是否真的想逃跑,否则什么的,自己去加吧


妙计二: 放关口
public class PutMark implements IStrategy{
         public void operate(String getMethod){
                String getStr = null;
                if(getMethod != null){
                               getStr = getMethod;
                }
               System.out.println("getMethod: "+getStr);
         }
}


妙计三:阻击追兵
public class BlockPursure implements IStrategy{
          public void operate(String getMethod){
                 String getStr = null;
                 if(getMethod != null){
                           getStr = getMethod;
                   }
                 System.out.println("getMethod: " + getStr);
           }
}


好了,以上执行方式有来,妙计也有了,接下来就是需要一个锦囊用来装这些妙计
看好了,我们是怎么来装的呢:
public class PackageCoup{
           private IStrategy mIStrategy;
           private String info;
           public PackageCoup(){}
           public PackageCoup(String info){
                    this.info = info;
           } 
          public void exeOperateCoup{
                    this.mIStrategy.operate(info);
         }
}


OK,上面的锦囊我们做好了哦,并且把三个妙计也放了进去,这时候赵云可以放心的陪刘备去江东取老婆了哦,说起取老婆,俺还是个单身哦,如果谁有意向,可与我联系,碰缘的话,咋还真能碰上一对去,哎,谁叫自己不是女生喜欢坏的那种男生呢,搞不懂现在的女生,哎,有谁能教我学坏的,我还真愿意学习一番,只要能真正找到一个自己认为还可以,并能共同去承担与努力和相爱的女孩子,我真是感激不尽。话说远了,咋还是谈点近的吧,上面的妙计有了,锦囊有了,执行的命令方式有了,问题接下来它需要一定的条件由指定相关的人去执行,这个问题,咋不二话了,既然担子在赵云身上,肯定是赵云去执行这样的操作了罗,看下面的代码:
public class ExePerson{
        private PackageCoup mPc;
        private String info;
        public static void main(String agrs[]){
                  System.out.println("遇到问题了: 周瑜起坏,快想办法,打开第一张妙计,一看:快逃");
                  info = "flee";
                  mPc = new PackageCoup(new Flee(),info);
                  mPc.exeOpearteCoup(info);
                  System.out,println("----------第一个妙计用完了,来到江边,看到前面有拦兵,快打开第二个妙计一看,直走,前面已经是我们的人了---------------------");
                  info = "putmark";
                  mPc = new PackageCoup(new PutMark(),info);
                  mPc.exeOpearteCoup(info);
                  System.out.println("-------顺利通过来第二关,不好,有追兵,而且来势汹汹,怎么办,快打开第三个妙计,一看,在前面山路口往小路直走,后面有关于对其阻击-----------");
                  info = "blockpursure";
                  mPc = new PackageCoup(new BlockPursure(),info);
                  mPc.exeOperateCoup(info);
                  System.out.println("OK,三个妙计都用完了,要是再遇到问题咋办,路上一直彷徨不安,幸运的事,最终安全的到达了");
         }
}

OK,上面就是赵云通过妙计规则执行的过程,很好理解吧,今天我们就对其策略模式讲到这里,有什么新的见解可以直接喷上来,并且欢迎讨论。。。。

执行效果:

one:
this is for flee!
------------------------------
two
this is for putmark!
--------------------------------
three
this is for blockpursure!


你可能感兴趣的:(设计模式,String,null,Class,文档,interface)