码农小汪-设计模式之-策略模式

strategy 策略模式

我自己想用自己的思路和方式,表达设计模式,让自己理解。复习起来比较的简单,而且加深自己的印象

  1. what?
    我们根据环境的不同,选择不同条件的策略操作。比如我再大话设计模式中看的的一个例子,我们超市打折。可能有的时候不打折,可能打折的力度不一样。根据具体的行为选择我们需要执行的方法。

出行旅游:我们可以有几个策略可以考虑:可以骑自行车,汽车,做火车,飞机。每个策略都可以得到相同的结果,但是它们使用了不同的资源。选择策略的依据是费用,时间,使用工具还有每种方式的方便程度 。
码农小汪-设计模式之-策略模式_第1张图片
2. 结构是怎么样的呢?
码农小汪-设计模式之-策略模式_第2张图片

环境类(Context):用一个ConcreteStrategy对象来配置。维护一个对Strategy对象的引用。可定义一个接口来让Strategy访问它的数据。
抽象策略类(Strategy):定义所有支持的算法的公共接口。
Context使用这个接口来调用某ConcreteStrategy定义的算法。
具体策略类(ConcreteStrategy):以Strategy接口实现某具体算法。
上面的都是面向接口编程的~慢慢的就晓得了他的好处!

这个UML画的~
我们来实现一下这个旅游的吧

public  interface Strategy 
{   
    public Trave() ;    
}
public class CarConcreate implements Strategy {
    public Trave() {
     //
    }
}
public class BickConcrrete implements Strategy {
    public Trave() {
     //
    }
}
public class Context
{

    public Strategy Test;


    public Context(Strategy parameter) {
        Test=parameter;
    }
    public Trave() {
         Test.Trave();
    }

}

我们就可以通过不同的Contex,传入不同的值进行处理~

策略模式就是完成一系列的方法,这些方法只是实现的形式不一样~,比如Trave。。可以用相同的方式调用所有的方法,减少了各类方法和使用方法之间的耦合

你可能感兴趣的:(设计模式)