策略模式是设计模式的一种,它可以简化我们重复代码的出现,主要体现在客户端传参的修改。下面给出一个具体的例子:
public interface MemberStrategy {
/**
* 计算图书的价格
* @param bookPrice 图书的原价
* @return 打折后的价格
*/
public double calcPrice(double bookPrice);
}
public class ChujiStrategy implements MemberStrategy {
@Override
public double calcPrice(double bookPrice) {
System.out.println("对于初级会员没有会员折扣");
return bookPrice;
}
}
public class ZhongjiStrategy implements MemberStrategy{
@Override
public double calcPrice(double bookPrice) {
System.out.println("对于中级会员折扣为10%");
return bookPrice-bookPrice * 0.1;
}
}
public class GaojiStrategy implements MemberStrategy {
@Override
public double calcPrice(double bookPrice) {
System.out.println("对于高级会员折扣为20%");
return bookPrice-bookPrice * 0.2;
}
}
/***
* 一个公共类,通过调用公共类的方法,作为桥梁进入每个对象的具体方法
*
*/
public class Price {
private MemberStrategy memberStrategy;
public Price(MemberStrategy memberStrategy) {
this.memberStrategy = memberStrategy;
}
public double count(double bookPrice){
double price=memberStrategy.calcPrice(bookPrice);
return price;
}
}
/***
*策略模式
* 所有的策略都是客户端提供,服务端只是调用
*
*/
public class Client {
public static void main(String[] args) {
//MemberStrategy strategy=new ChujiStrategy();
//MemberStrategy strategy=new ZhongjiStrategy();
MemberStrategy strategy=new GaojiStrategy();
Price price=new Price(strategy);
double quote=price.count(300);
System.out.println("图书的最终价格为:" + quote);
}
}
原文:https://www.cnblogs.com/zhaoyangxuan/p/14841971.html