美文网首页
设计模式之策略模式的介绍

设计模式之策略模式的介绍

作者: 是王威啊 | 来源:发表于2019-08-27 21:55 被阅读0次

前言

在给人介绍设计模式的时候,总是由于记忆不清楚导致效果不好。索性写文章记下来,正所谓好记性不如烂笔头,以后切记总结思考,不断进步。

开始

在策略模式中,一个类的行为或者算法可以在运行时候更改,这种类型的设计模式属于行为型模式。在策略模式中,我们创建各种策略对象和一个行为随着
策略对象改变而改变的context对象,策略对象改变context对象的执行算法。

意图: 定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。
解决: 在有多种算法相似的情况下,使用 if...else 所带来的复杂和难以维护。

优点: 算法可以自由的切换,避免使用多重的if/else判断,扩展性良好。
缺点: 策略类会增多,并且策略类要对外暴露方法。

使用场景:1.如果在一个系统里面有许多类,他们的区别仅在于他们的行为,那么使用策略模式可以让一个对象在许多行为中选择一种行为;2.如果一个对象有很多行为,如果使用不当的设计模式,这些行为就只好使用多重的条件选择语句来实现。

实现

创建一个接口:

public interface Strategy {
    int doOperation(int num1, int num2); }

创建实现接口的实现类1:

public class OperationAdd implements Strategy {
    @Override
    public int doOperation(int num1, int num2) {
        return num1 + num2;
    }}

创建实现接口的实现类2:

public class OperationMultiply implements Strategy {
    @Override
    public int doOperation(int num1, int num2) {
        return num1 * num2;
    }}

创建context类:

public class Context {
    private Strategy strategy;
    public void setStrategy(Strategy strategy) {
        this.strategy = strategy;
    }

    public int executeStrategy(int num1, int num2) {
        return strategy.doOperation(num1, num2);
    }}

使用 Context 来查看当它改变策略 Strategy 时的行为变化:

public class Context {
    private Strategy strategy;
    public void setStrategy(Strategy strategy) {
        this.strategy = strategy;
    }
    public int executeStrategy(int num1, int num2) {
        return strategy.doOperation(num1, num2);
    }

    public static void main(String[] args) {
        Context context = new Context();
        context.setStrategy(new OperationAdd());
        System.out.println(context.executeStrategy(1, 2)); //输出 3

        context.setStrategy(new OperationMultiply());
        System.out.println(context.executeStrategy(3, 4)); //输出12
    }}

这就是策略模式的基本用法了,大胆的在项目中运用他吧!

相关文章

  • PHP设计模式之策略模式

    PHP设计模式之策略模式

  • PHP设计模式之策略模式

    PHP设计模式之策略模式

  • 简说设计模式之策略模式

    前言:对于设计模式基础概念可以去看[简说设计模式之设计模式概述] 一、什么是策略模式 策略(Strategy)模式...

  • 设计模式之--策略模式及其在JDK中的应用

    前言:本文主要介绍设计模式中的策略模式,准备按照以下几个方面展开: 什么是策略模式 策略模式结构和UML图 策略模...

  • 策略模式

    参考资料:漫话:如何给女朋友解释什么是策略模式? 设计模式之策略模式(实例+Demo) Java设计模式(8)——...

  • 学习Head First设计模式Day1

    Java设计模式之设计模式 策略模式:策略模式定义了算法簇,分别封装起来,让他们之间可以互相替换,此设计模式让算法...

  • 策略模式 2018-11-04

    设计模式之策略模式 官方说明设计模式的3个角色: 环境角色:context , 持有一个策略的引用 抽象策略角色,...

  • 设计模式-状态模式

    介绍 状态模式和策略模式是一对双胞胎,他们都属于行为设计模式。状态模式和策略模式都是为具有多种可能情形设计的模式,...

  • 设计模式之策略模式的介绍

    前言 在给人介绍设计模式的时候,总是由于记忆不清楚导致效果不好。索性写文章记下来,正所谓好记性不如烂笔头,以后切记...

  • Java设计模式——策略模式

    Java设计模式之策略模式 这期分享的模式是策略模式是程序设计中最常用的了,因为开发工作中总是会使用到策略模式。 ...

网友评论

      本文标题:设计模式之策略模式的介绍

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