设计模式----策略模式

策略模式

概述

简单理解

比如:在我的世界中 有两个物品 1.铁 2.木棍

铁和木棍可以合成多种物品 (如:铁镐,铁斧,铁剑…)

用户可以根据需求来选择自己所需要的物品 这就是策略模式

主要解决

在有多种算法相似的情况下,使用 if…else 所带来的复杂和难以维护。

何时使用

一个系统有许多许多类,而区分它们的只是他们直接的行为。

使用场景

1、如果在一个系统里面有许多类,它们之间的区别仅在于它们的行为,那么使用策略模式可以动态地让一个对象在许多行为中选择一种行为。

2、一个系统需要动态地在几种算法中选择一种。

3、如果一个对象有很多的行为,如果不用恰当的模式,这些行为就只好使用多重的条件选择语句来实现

注意:如果一个系统的策略多于四个,就需要考虑使用混合模式,解决策略类膨胀的问题。

代码

接口

//合成的物品类 需要同一个接口
public interface Items {
    String getItems(String s1,String s2);
}

物品类

public class LronJian implements Items{

    public String getItems(String s1, String s2) {
        System.out.println(s1+"+"+s2+": 铁剑");
        return "铁剑";
    }
}
public class Pickmattock implements Items{

    public String getItems(String s1, String s2) {
        System.out.println(s1+"+"+s2+": 铁镐");
        return "铁镐";
    }
}

context

public class Context {
    private Items items;
	//根据传入的物品类 来创建
    public Context(Items item){
        this.items = item;
    }

    public String executeItems(String s1, String s2){
        return items.getItems(s1, s2);
    }
}

测试类

public class Demo {
    public static void main(String[] args) {
        //告诉Context类 需要合成的物品的 类
        Context context = new Context(new LronJian());
        context.executeItems("铁","木棍");

        //告诉Context类 需要合成的物品的 类
        Context context2 = new Context(new Pickmattock());
        context2.executeItems("铁","木棍");
    }
}
//测试结果+木棍: 铁剑
铁+木棍: 铁镐
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值