首页 > 其他 > 详细

设计模式(一)-接口使用场景

时间:2020-06-05 01:20:42      阅读:59      评论:0      收藏:0      [点我收藏+]

 

用户折扣计费运用

public interface CalculateStrategy {
	public String userType();

	public double discount(double fee);
}

几种不同的计费实现

普通用户

// 普通用户
@Service
public class NormalStrategy implements  CalculateStrategy{

    @Override
    public String userType() {
        return "normal";
    }

    @Override
    public double discount(double fee) {
        return fee * 1.0;
    }

}

会员

@Service
public class VipStrategy implements CalculateStrategy {

    @Override
    public String userType() {
        return "vip";
    }

    @Override
    public double discount(double fee) {
        return fee * 0.8;
    }

}

 买的行为

@Service
public class SaleService {


    HashMap<String, CalculateStrategy> calculateStrategyHashMap = new HashMap<>();

    public SaleService(List<CalculateStrategy> calculateStrategyList) { // 托管给spring -- spring会给我们去创建对象
        for (CalculateStrategy calculateStrategy : calculateStrategyList) {
            calculateStrategyHashMap.put(calculateStrategy.userType(), calculateStrategy);
        }
    }

    public double sale(String userType, double fee) {
        // 实际业务中: 计费优惠计算不是一行代码这么简单。
        CalculateStrategy calculateStrategy = calculateStrategyHashMap.get(userType);
        fee = calculateStrategy.discount(fee);
        return fee;
    }

}

测试

@RunWith(SpringRunner.class)
@SpringBootTest
public class DesignPatternApplication {
	
	@Autowired
	OrderService orderService;
	
	@Autowired
	SaleService saleService;
	
	@Test
	public void test1(){
		double sale = saleService.sale("normal", 100);
		System.out.print(sale);
	}
	

}

  

 

 

 

 

 

 

 

 

 

 

 

 

 

设计模式(一)-接口使用场景

原文:https://www.cnblogs.com/Jomini/p/13047294.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!