设计模式七(策略模式)

可以将同一种功能的不同实现细节抽取到一个抽象接口中,把不同的实现让子类实现,最终我们只需选择不同的子类即可

策略类 Strategy : 定义所有⽀持的算法的公共接⼝。

具体策略类 ConcreteStrategy : 实现了策略接⼝,提供具体的算法实现。

上下⽂类 Context : 包含⼀个策略实例,并在需要时调⽤策略对象的⽅法

策略类

java 复制代码
public interface Strategy {
    void show();
}

具体策略类

java 复制代码
public class StrategyA implements Strategy {

    public void show() {
        System.out.println("春节活动: 买一送一");
    }
}
java 复制代码
public class StrategyB implements Strategy {

    public void show() {
        System.out.println("中秋活动: 满200元减50元");
    }
    
}

上下文类

java 复制代码
public class SalesMan {

    //持有抽象策略角色的引用
    private Strategy strategy;

    public SalesMan(Strategy strategy) {
        this.strategy = strategy;
    }

    //向客户展示促销活动
    public void salesManShow(){
        strategy.show();
    }
}

Test

java 复制代码
public class Test {

    public static void main(String[] args) {

        SalesMan salesManA = new SalesMan(new StrategyA());
        salesManA.salesManShow();

        SalesMan salesManB = new SalesMan(new StrategyB());
        salesManB.salesManShow();
    }
}
相关推荐
杨充23 分钟前
10.可测试性实战设计
设计模式·开源·代码规范
杨充32 分钟前
9.重构十二式的实战
设计模式·开源·代码规范
杨充42 分钟前
6.设计原则的全景图
设计模式·开源·全栈
杨充44 分钟前
2.面向对象的特性
设计模式
杨充1 小时前
7.SOLID原则案例汇
设计模式·开源·全栈
杨充1 小时前
8.反模式与坏味道
设计模式·开源·代码规范
杨充1 小时前
3.接口vs抽象类比较
设计模式
咖啡八杯4 小时前
文法、BNF与AST
java·设计模式·解释器模式·ast·文法
咖啡八杯13 小时前
GoF设计模式——解释器模式
java·后端·spring·设计模式