设计模式笔记——Strategy

来源:互联网 发布:java multiple points 编辑:程序博客网 时间:2024/05/17 00:56

策略模式Strategy

定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。

 

 

策略模式是一种定义一些列算法的方法,所有这些算法完成的工作相同,但是实现不同,它可以用相同的方式调用所有的算法,减少各种算法类与使用算法类之间的耦合

 

Strategy类层次为Context定义了一系列的可重用的算法或者行为。继承有助于析取出这些算法中的公共功能。

 

当不同的行为堆砌在一个类里面的时候,就很难避免用条件语句来选择合适的行为。将这些行为封装在独立的Strategy类中,可以使用这些行为的类中消除条件语句。

 

策略模式可以用来封装几乎任何类型的规则。只要在分析过程中听到需要在不同世界应用不同的业务规则,就可以考虑使用策略模式处理这变化的可能性。


package strategy.pattern;public class StrategyPattern {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubContext context;context=new Context(new ConcreteStrategyA());context.ContextInterface();context=new Context(new ConcreteStrategyB());context.ContextInterface();context=new Context(new ConcreteStrategyC());context.ContextInterface();}}

package strategy.pattern;public interface Strategy {public void AlgorithmInterface();}

package strategy.pattern;public class Context {private Strategy stragety;public Context(Strategy stragety){this.stragety=stragety;}public void ContextInterface(){stragety.AlgorithmInterface();}}

package strategy.pattern;public class ConcreteStrategyA implements Strategy {@Overridepublic void AlgorithmInterface() {// TODO Auto-generated method stubSystem.out.println("Concrete Algorithm A");}}

package strategy.pattern;public class ConcreteStrategyB implements Strategy {@Overridepublic void AlgorithmInterface() {// TODO Auto-generated method stubSystem.out.println("Concrete Algorithm B");}}

package strategy.pattern;public class ConcreteStrategyC implements Strategy {@Overridepublic void AlgorithmInterface() {// TODO Auto-generated method stubSystem.out.println("Concrete Algorithm C");}}


原创粉丝点击