设计模式七(策略模式)

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

策略类 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();
    }
}
相关推荐
蓝瑟6 小时前
告别重复造轮子!业务组件多场景复用实战指南
前端·javascript·设计模式
Arva .9 小时前
讲一下 Spring 中用到的设计模式
java·spring·设计模式
繁华似锦respect10 小时前
lambda表达式中的循环引用问题详解
java·开发语言·c++·单例模式·设计模式·哈希算法·散列表
星月IWJ13 小时前
领域驱动设计学习
java·学习·设计模式
_dindong14 小时前
Linux网络编程:Reactor反应堆模式
linux·服务器·网络·设计模式·php
雨中飘荡的记忆15 小时前
Step Builder模式实战
java·设计模式
Eren7Y琳15 小时前
开箱即用构建应用环境:openEuler易获得性深度验证
redis·设计模式·架构
Unstoppable2215 小时前
八股训练营第 39 天 | Bean 的作用域?Bean 的生命周期?Spring 循环依赖是怎么解决的?Spring 中用到了那些设计模式?
java·spring·设计模式
闲人编程16 小时前
微服务API网关设计模式
python·缓存·微服务·设计模式·系统安全·api·codecapsule
__万波__16 小时前
二十三种设计模式(八)--装饰器模式
java·设计模式·装饰器模式