美文网首页
5、Strategy 策略模式

5、Strategy 策略模式

作者: 冰镇柠檬_tree | 来源:发表于2019-04-02 17:21 被阅读0次

1、定义

策略模式的主要目的是将算法的定义和使用分开,也就是将算法的行为和环境分开,将算法的定义放在专门的策略类中,每一个策略类封装一个实现算法。而使用算法的环境中针对抽象策略编程,而不是针对实现编程,符合依赖倒置原则
(1)Context(环境类):负责使用算法策略,其中维持了一个抽象策略类的引用实例。

/**
 * 策略上下文
 */
public class StrategyContext {
    //持有一个策略实现的引用
    private IStrategy strategy;
    //使用构造器注入具体的策略类
    public StrategyContext(IStrategy strategy) {
        this.strategy = strategy;
    }

    public void contextMethod(){
        //调用策略实现的方法
        strategy.algorithmMethod();
    }
}

(2)Strategy(抽象策略类):所有策略类的父类,为所支持的策略算法声明了抽象方法。=> 既可以是抽象类也可以是接口

//策略接口
public interface IStrategy {
    //定义的抽象算法方法 来约束具体的算法实现方法
    public void algorithmMethod();
}

(3)ConcreteStrategy(具体策略类):实现了在抽象策略类中声明的方法。

// 具体的策略实现
public class ConcreteStrategy implements IStrategy {
    //具体的算法实现
    @Override
    public void algorithmMethod() {
        System.out.println("this is ConcreteStrategy method...");
    }
}

 // 具体的策略实现2
public class ConcreteStrategy2 implements IStrategy {
     //具体的算法实现
    @Override
    public void algorithmMethod() {
        System.out.println("this is ConcreteStrategy2 method...");
    }
}

(4)Demo 
策略模式就是把各个平等的具体实现进行抽象、封装成为独立的算法类,然后通过上下文和具体的算法类来进行交互。各个策略算法都是平等的,地位是一样的,正是由于各个算法的平等性,所以它们才是可以相互替换的。虽然我们可以动态的切换各个策略,但是同一时刻只能使用一个策略。

//外部客户端
public class Client {
    public static void main(String[] args) {
        //1.创建具体测策略实现
        IStrategy strategy = new ConcreteStrategy2();
        //2.在创建策略上下文的同时,将具体的策略实现对象注入到策略上下文当中
        StrategyContext ctx = new StrategyContext(strategy);
        //3.调用上下文对象的方法来完成对具体策略实现的回调
        ctx.contextMethod();
    }
}

相关文章

  • 王者荣耀之「策略者模式」

    目录 什么策略模式(Strategy)1.1 Strategy模式的定义1.2 为什么用Strategy模式,他的...

  • 5、Strategy 策略模式

    1、定义 策略模式的主要目的是将算法的定义和使用分开,也就是将算法的行为和环境分开,将算法的定义放在专门的策略类中...

  • 策略模式 -- 整体的替换算法

    1. 概述 所谓“策略”(strategy),即程序中的“算法”。策略模式(strategy pattern)可以...

  • 设计模式[13]-策略模式-Strategy Pattern

    1.策略模式简介 策略模式(Strategy Patter)是行为型(Behavioral)设计模式,策略模式封装...

  • 设计模式-策略模式

    设计模式-策略模式 定义 策略模式(Strategy Pattern)也叫政策模式(Policy Pattern)...

  • 设计模式之策略模式

    策略模式 Strategy Intro 策略模式(Strategy):它定义了算法家族,分别封装起来,让它们之间可...

  • 策略模式(Strategy pattern)

    策略模式的定义与特点 定义:策略模式(Strategy Pattern)又叫政策模式(Policy Pattern...

  • iOS 设计模式-策略模式

    1.策略模式简介   策略模式(Strategy Pattern),是行为型模式之一(设计模式分类:https:/...

  • 行为型-Strategy

    策略模式的原理与实现 策略模式的原理与实现策略模式,英文全称是 Strategy Design Pattern。在...

  • 策略模式优化 if else

    策略模式 什么是策略模式? 策略模式的定义与特点 策略(Strategy)模式的定义:该模式定义了一系列算法,并将...

网友评论

      本文标题:5、Strategy 策略模式

      本文链接:https://www.haomeiwen.com/subject/vpvlbqtx.html