初级策略模式
This commit is contained in:
@@ -0,0 +1,17 @@
|
|||||||
|
package top.fjy8018.designpattern.pattern.behavior.strategy;
|
||||||
|
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 返现促销策略
|
||||||
|
*
|
||||||
|
* @author F嘉阳
|
||||||
|
* @date 2020/3/4 15:38
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
public class FanXianPromotionStrategy implements PromotionStrategy {
|
||||||
|
@Override
|
||||||
|
public void doPromotion() {
|
||||||
|
log.info("返现促销,返回金额存放到用户余额中");
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package top.fjy8018.designpattern.pattern.behavior.strategy;
|
||||||
|
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 立减促销策略
|
||||||
|
*
|
||||||
|
* @author F嘉阳
|
||||||
|
* @date 2020/3/4 15:39
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
public class LiJianPromotionStrategy implements PromotionStrategy {
|
||||||
|
@Override
|
||||||
|
public void doPromotion() {
|
||||||
|
log.info("立减促销,课程价格直接减去配置的价格");
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package top.fjy8018.designpattern.pattern.behavior.strategy;
|
||||||
|
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 满减促销策略
|
||||||
|
*
|
||||||
|
* @author F嘉阳
|
||||||
|
* @date 2020/3/4 15:38
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
public class ManJianPromotionStrategy implements PromotionStrategy {
|
||||||
|
@Override
|
||||||
|
public void doPromotion() {
|
||||||
|
log.info("满减促销,满200-20");
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
package top.fjy8018.designpattern.pattern.behavior.strategy;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 促销包装类
|
||||||
|
*
|
||||||
|
* @author F嘉阳
|
||||||
|
* @date 2020/3/4 15:42
|
||||||
|
*/
|
||||||
|
public class PromotionActivity {
|
||||||
|
|
||||||
|
private PromotionStrategy promotionStrategy;
|
||||||
|
|
||||||
|
public PromotionActivity(PromotionStrategy promotionStrategy) {
|
||||||
|
this.promotionStrategy = promotionStrategy;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 执行促销逻辑
|
||||||
|
*/
|
||||||
|
public void executePromotionStrategy() {
|
||||||
|
this.promotionStrategy.doPromotion();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
package top.fjy8018.designpattern.pattern.behavior.strategy;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 促销接口
|
||||||
|
*
|
||||||
|
* @author F嘉阳
|
||||||
|
* @date 2020/3/4 15:37
|
||||||
|
*/
|
||||||
|
public interface PromotionStrategy {
|
||||||
|
|
||||||
|
void doPromotion();
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
package top.fjy8018.designpattern.pattern.behavior.strategy;
|
||||||
|
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author F嘉阳
|
||||||
|
* @date 2020/3/4 15:46
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
class PromotionStrategyTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void existIfElse() {
|
||||||
|
String promotionKey = "LIJIAN";
|
||||||
|
PromotionActivity activity = null;
|
||||||
|
if (StringUtils.equals(promotionKey, "LIJIAN")) {
|
||||||
|
// 方法和类本身线程安全
|
||||||
|
activity = new PromotionActivity(new LiJianPromotionStrategy());
|
||||||
|
} else if (StringUtils.equals(promotionKey, "MANJIAN")) {
|
||||||
|
activity = new PromotionActivity(new FanXianPromotionStrategy());
|
||||||
|
}
|
||||||
|
|
||||||
|
activity.executePromotionStrategy();
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user