首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >策略模式

策略模式

作者头像
晚上没宵夜
发布2020-03-11 14:22:26
发布2020-03-11 14:22:26
7160
举报

1. 策略模式(Strategy Pattern)

给一个对象(context )以不同的策略(Strategy ),该对象就会执行不同的策略算法,这里需要三个对象

  • 策略算法接口
  • 每个算法的具体实现
  • Context 对象

2. 流程

2.1 策略算法接口

代码语言:javascript
复制
public interface Strategy {
    abstract void travel();
}

2.2 策略算法的具体实现

  • 坐飞机
代码语言:javascript
复制
public class aircraft implements Strategy {

    public void travel() {
        System.out.println("坐飞机");
    }
}
  • 坐火车
代码语言:javascript
复制
public class train implements Strategy {

    public void travel() {
        System.out.println("坐火车");
    }
}

2.3 上下文对象

代码语言:javascript
复制
public class Context {
    
    private Strategy st;

    public Context(Strategy st) {
        this.st = st;
    }
    
    public void Setout(){
        System.out.println("Coneext去旅游——————策略算法为:");
        st.travel();
    }
}

2.4 实现

代码语言:javascript
复制
public static void main(String[] args) {
    
    Context c1 = new Context(new aircraft());
    c1.Setout();
    
    System.out.println("------------------------------");
    
    Context c2 = new Context(new train());
    c2.Setout();
}
代码语言:javascript
复制
Coneext去旅游——————策略算法为:
坐飞机
------------------------------
Coneext去旅游——————策略算法为:
坐火车

说到底策略模式和装饰者模式还是有很大的相似性,都是通过包装来实现----装饰者模式

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-12-12 ,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 1. 策略模式(Strategy Pattern)
  • 2. 流程
    • 2.1 策略算法接口
    • 2.2 策略算法的具体实现
    • 2.3 上下文对象
    • 2.4 实现
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档