初级策略模式
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