什么是 策略模式 ?让你描述的话,可以吗?
属于行为类模式,定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。
策略模式的主要优点有:
它与 模版方法 模式的区别在于:
有一种模式也是关注对算法的封装——模版方法模式
在模版方法模式中,调用算法的主体在抽象的父类中,
而在策略模式中,调用算法的主体则是封装到了封装类Context中,
抽象策略 IStrategy 一般是一个接口,目的只是为了定义规范,里面一般不包含逻辑。
其实,这只是通用实现,而在实际编程中,因为各个具体策略实现类之间难免存在一些相同的逻辑,为了避免重复的代码,我们常常使用抽象类来担任Strategy的角色,在里面封装公共的代码,因此,在很多应用的场景中,在策略模式中一般会看到模版方法模式的影子。
//抽象策略interface IStrategy {public void doSomething();}class ConcreteStrategy1 implements IStrategy {public void doSomething() {System.out.println("策略1");}}class ConcreteStrategy2 implements IStrategy {public void doSomething() {System.out.println("策略2");}}
//封装类class Context {private IStrategy strategy;public Context(IStrategy strategy){this.strategy = strategy;}public void execute(){strategy.doSomething();}}
//调用public class Client {public static void main(String[] args){Context context;System.out.println("-----执行策略1-----");context = new Context(new ConcreteStrategy1());context.execute(); System.out.println("-----执行策略2-----");context = new Context(new ConcreteStrategy2());context.execute();}}
策略模式的结构
留言与评论(共有 0 条评论) “” |